我写了服务器和客户端,看来它们只通讯一次。我尝试了几种方法来解决它,但是没有运气。我试图将'\ n'放在字符串的末尾,但没有任何变化。有人可以帮忙吗? 服务器代码:
# server
import socket
SERVER_IP = '0.0.0.0'
DEST_PORT = 1731
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bind((SERVER_IP,DEST_PORT))
server_socket.listen(1)
client_socket,address=server_socket.accept()
for i in range(2):
data = client_socket.recv(512).decode()
client_socket.sendall(("hello"+data+'\n').encode())
data1 = client_socket.recv(512).decode()
print(data1)
client_socket.close()
server_socket.close()
#client
import socket
HOST_IP = '127.0.0.1'
DEST_PORT = 1731
my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
my_socket.connect((HOST_IP,DEST_PORT))
user_msg = input("Enter massage:")
for i in range(2):
my_socket.sendall(user_msg.encode())
data = my_socket.recv(512).decode()
print(data)
my_socket.sendall("hiii\n".encode())
my_socket.close()
答案 0 :(得分:0)
为我工作,但是由于您在客户端循环之外获取了输入,因此两个迭代是瞬时的:
当打印更清晰的消息时,这很清楚(前缀是打印的哪一侧):
Enter massage:test message <- client sends this, server replies with "ping <message>"
[client] ping test message <- client prints response, sends final message and loops around
[server] pong <- server prints second message it got, loops around
[client] ping test message <- client prints response it got from server bouncing message again
[client] stop <- client exits
[server] pong <- server gets second message of loop
[server] stop <- and exits