On Monday, March 30, 2015 at 1:44:17 AM UTC-7, bobbdeep wrote: > I am using TCP sockets to communicate between my server and clients. The > server code and socket code are as below: > > server: > > from socket import * > > HOST = 'xx.xx.xx.xx' > PORT = 1999 > serversocket = socket(AF_INET,SOCK_STREAM) > serversocket.bind((HOST,PORT)) > print 'bind success' > serversocket.listen(5) > print 'listening' > while True: > (clientsocket, address) = serversocket.accept() > print ("Got client request from",address) > #clientsocket.send('True') > data = clientsocket.recv(1024) > print data > clientsocket.send('True') > clientsocket.close() > > > client: > > import socket > import sys > > # Create a TCP/IP socket > sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > > # Connect the socket to the port on the server given by the caller > server_address = ('xx.xx.xx.xx', 1999) > print >>sys.stderr, 'connecting to %s port %s' % server_address > sock.connect(server_address) > > try: > > message = 'This is the message. It will be repeated.' > print >>sys.stderr, 'sending' > for x in range (0,1): > name=raw_input ('what is ur name') > print type(name) > sock.send(name) > print sock.recv(1024) > > finally: > sock.close() > > > I am able to communicate with the server from client and able to send and > receive data. But the problem I am facing is that I am not able to send and > receive data continuously from the server. I have to restart my client code > on my laptop to send and receive data again from the server. The way the > above client code is working is that when I give a keyboard input, then the > socket sends data to server and server responds back. But in the client code, > in the for loop if I do two iterations, for the second iteration the data I > enter from keyboard is not reaching server. I need to restart my client code > to send data again. How do I fix this ? > > Also, when once client is connected to the server, the other cannot connect > to the server. Any ideas on how to do this ?
You have a bug here: for x in range(0, 1): range(0, 1) returns simply [0]. It is only going to loop once. If you want it to loop twice, just use range(2). Also, your server is immediately closing the connection after the first packet of data. data = clientsocket.recv(1024) print data clientsocket.send('True') clientsocket.close() Your server receives the first send from the client, prints it, sends back a 'True', then closes the connection. -- https://mail.python.org/mailman/listinfo/python-list