Small socket problem

J

John O'Hagan

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top