Reputation: 23
I am trying to make server and client (I am still learning) but the server is stuck in the while loop even after he received the "exit" from the client. what am I doing wrong? thank you
import socket
s = socket.socket()
s.bind(("0.0.0.0",5511))
s.listen(1)
c, addr = s.accept()
msg = c.recv(2048).decode()
while msg != "exit":
print(msg)
print("still connected")
msg = c.recv(2048).decode()
c.settimeout(5)
c.close()
s.close()
import socket
s = socket.socket()
s.connect(("127.0.0.1",5511))
msg = input("What send to the server: ")
while msg != "exit":
s.send(msg.encode())
msg = input("What send to the server: ")
s.close()
Upvotes: 1
Views: 891
Reputation: 11
Take a look at your while
loop in the client. It doesn't execute the body if msg == "exit"
. So if msg
is "exit"
, the client doesn't send anything to the server. As a result, the server doesn't receive a message and blocks on the msg = c.recv(2048).decode()
line in the ""server"" code.
server.py
import socket
s = socket.socket()
s.connect(("127.0.0.1",5511))
msg = ""
while msg != "exit":
msg = input("What send to the server: ")
s.send(msg.encode())
s.close()
client.py
import socket
s = socket.socket()
s.bind(("0.0.0.0",5511))
s.listen(1)
c, addr = s.accept()
msg = c.recv(2048).decode()
while msg != "exit":
print(msg)
print("still connected")
msg = c.recv(2048).decode()
c.settimeout(5)
c.close()
s.close()
Upvotes: 1
Reputation: 322
I initially posted this as a edit to rmh's answer but the edit didn't go throug till now so I post my own answer
server.py
import socket
s = socket.socket()
s.connect(("127.0.0.1",5511))
msg = ""
while msg != "exit":
msg = input("What send to the server: ")
s.send(msg.encode())
s.close()
client.py
import socket
s = socket.socket()
s.bind(("0.0.0.0",5511))
s.listen(1)
c, addr = s.accept()
msg = c.recv(2048).decode()
while msg != "exit":
print(msg)
print("still connected")
msg = c.recv(2048).decode()
c.settimeout(5)
c.close()
s.close()
Upvotes: 1
Reputation: 23
Thank you for all your help, I added new line of "s.send(msg.encode())" after the "while" and it work now.
Thank you very much!
Upvotes: 1