Search code examples
pythonsocketstcp

Python TCP server receives only one message out of multiple messages


I have simple code that asks multiple inputs from user and sends it to the server but the server only recieves the first message. How can I make the server get rest of the messages?

Client:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1',8000))
for i in range(1,3):
    message = input("Enter your message:")
    s.send(message.encode())
s.close()

Server:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 8000))
s.listen(1)
print('ready')
while True:
    c,addr = s.accept()
    sentence = c.recv(1024)
    print(sentence.decode())

c.close()

Solution

  • I think the problem is in the server.py line 7. It awaits to accept connection therefore does not wait to receive data.

    For server.py

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('', 8000))
    s.listen(1)
    print('ready')
    c,addr = s.accept()
    while True:
        sentence = c.recv(1024)
        if sentence:
            print(sentence.decode())
    
    c.close()
    

    For the client.py

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1',8000))
    for i in range(1,3):
        message = input("Enter your message:")
        s.send(message.encode())
    s.close()