Hi, I feel like I should apologize in advance because I must be missing something fairly basic and fundamental here. I don't have a book on Python network programming (yet) and I haven't been able to find an answer on the net so far.
I am trying to create a pair of programs, one (the client) will be short-lived (fairly) and the second (server) will act as a cache for the client. Both will run on the same machine, so I think a simple file socket is the easiest and most reliable method. The problem I have is that the client can send to the server, but the server can't send back to the client because it gets this error: socket.error: (107, 'Transport endpoint is not connected') This is despite the client waiting on a socket.recv() statement. Is the client really not connected, or is the server unaware of the connection? And how do I fix this? I was able to get this working by switching to AF_INET, but that is not what I want. Unix sockets are bidirectional, correct? I have never programmed one, but I know that programs like clamav use a socket to receive an email to scan and return the result. Any help would be greatly appreciated! Jeff *** server.py *** #!/usr/bin/python import socket import os, os.path import time if os.path.exists("/tmp/mysock"): os.remove("/tmp/mysock") server = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) server.bind("/tmp/mysock") while True: datagram = server.recv(1024) if not datagram: break print datagram # the preceeding works, and I see the TEST TEST TEST statement the client sent time.sleep(2) # it dies on the next statement. server.send("Thank you\n") server.close() if os.path.exists("/tmp/mysock"): os.remove("/tmp/mysock") *** client.py: *** #!/usr/bin/python import socket client = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) client.connect("/tmp/mysock") TX = "TEST TEST TEST" TX_sent = client.send(TX) if TX_sent <> len(TX): print "TX incomplete" while True: print "Waiting..." datagram = client.recv(1024) # the client sits here forever, I see the "waiting appear" but it doesn't advance beyond # the recv statement. if not datagram: break print "Received: ",datagram client.close() -- http://mail.python.org/mailman/listinfo/python-list