Server Client Communication Python

13,084

Solution 1

In the server, you use the listening socket to receive data. It is only used to accept new connections.

change to this:

conn,addr =s.accept()

data=conn.recv(100000)  # Read from newly accepted socket

conn.close()
s.close()

Solution 2

Your line s.send is expecting to receive a stream object. You are giving it a string. Wrap your string with BytesIO.

Share:
13,084
Vinod K
Author by

Vinod K

Updated on June 04, 2022

Comments

  • Vinod K
    Vinod K almost 2 years

    Server

    import socket
    import sys
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    host= 'VAC01.VACLab.com'
    port=int(2000)
    s.bind((host,port))
    s.listen(1)
    
    conn,addr =s.accept()
    
    data=s.recv(100000)
    
    s.close
    

    CLIENT

    import socket
    import sys
    
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    host="VAC01.VACLab.com"
    port=int(2000)
    s.connect((host,port))
    s.send(str.encode(sys.argv[1]))
    
    s.close()
    

    I want the server to receive the data that client sends.

    I get the following error when i try this

    CLIENT Side

    Traceback (most recent call last): File "Client.py", line 21, in s.send(sys.argv[1]) TypeError: 'str' does not support the buffer interface

    Server Side

    File "Listener.py", line 23, in data=s.recv(100000) socket.error: [Errno 10057] A request to send or receive data was disallowed bec ause the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied

  • Vinod K
    Vinod K about 12 years
    Still giving the same error at the client side. The server error got resolved.
  • Vinod K
    Vinod K about 12 years
    Do i do this str.encode(sys.argv[1]) ?? i did that ,the errors have stopped but the data is not transferring.
  • Senthil Kumaran
    Senthil Kumaran about 12 years
    Vinod - Try it with Python2 then to know the difference.
  • Mahesha999
    Mahesha999 almost 6 years
    but their are recv() and send() methods on socket object.