List, I'm new to sockets and having trouble. I tried to write a simple client/server program (see code below). The client would send a string to the server. The server would echo that back to the client.
PROBLEM: I can send data to the server, and get data back, but only for the first call to the 'sendall()' method. If I try to call it in a loop on the client, to print a count-down, only the first call gets echoed. Clearly, I'm missing something. EXAMPLE: (They're on the same physical machine.) Shell on the server: modu...@modunix> ./socket_server.py Listening for clients... Got connection from 192.168.1.1 Shell on the client: modu...@modunix> ./latency_client.py 192.168.1.1 2554 0 What I wanted: [-]modu...@modunix> ./latency_client.py 192.168.1.1 2554 0 1 2 CODE: ################################ # The client program: ################################ import socket import sys def main(): '''Send data to a server and receive the data echoed back to us.''' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect( ('192.168.1.1', 2554) ) for i in range(3): s.sendall(str(i)) print s.recv(1024) s.close() # Execution starts here: try: main() except KeyboardInterrupt: sys.exit("Aborting.") ################################ # The server program: ################################ import socket import sys def main(): '''Listen for a client and echo data back to them.''' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind( ('192.168.1.1', 2554) ) s.listen(5) print "Listening for clients..." while True: channel, client = s.accept() print "Got connection from %s" % client[0] message = channel.recv(1024) channel.send(message) channel.close() # Execution starts here: try: main() except KeyboardInterrupt: sys.exit("Aborting.") _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor