Hi, I'm using the socket module (python 2.5) like this (where 'options' refers to an optparse object) to connect to the Fluidsynth program:
host = "localhost" port = 9800 fluid = socket(AF_INET, SOCK_STREAM) try: fluid.connect((host, port)) #Connect if fluidsynth is running except BaseException: print "Connecting to fluidsynth..." #Or start fluidsynth soundfont = options.soundfont driver = options.driver Popen(["fluidsynth", "-i", "-s", "-g", "0.5", "-C", "1", "-R", "1", "-l", "-a", driver, "-j", soundfont]) timeout = 50 while 1: timeout -= 1 if timeout == 0: print "Problem with fluidsynth: switching to synth." play_method = "synth" break try: fluid.connect((host, port)) except BaseException: sleep(0.05) continue else: break (I'm using BaseException because I haven't been able to discover what exception class[es] socket uses). The problem is that this fails to connect ( the error is "111: Connection refused") the first time I run it after booting if fluidsynth is not already running, no matter how long the timeout is; after Ctrl-C'ing out of the program, all subsequent attempts succeed. Note that fluidsynth need not be running for a success to occur. I've also tried it without the while loop, simply sleeping for a few seconds to give fluidsynth time to start (not a preferred approach as I want a short startup), but the same thing happens. I am a long way from being a networking guru and am at a loss as to how to debug this. Maybe someone can point out some flaw in my use of socket. Thanks, John O'Hagan -- http://mail.python.org/mailman/listinfo/python-list