Communicating with multiple clients using one TCP socket pyt
sohcahtoa82 at gmail.com
sohcahtoa82 at gmail.com
Mon Mar 30 13:36:01 EDT 2015
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.
More information about the Python-list
mailing list