我已经实现了一个简单的服务器 - 客户端模型,用于在我的Raspberry Pi和我运行Linux,Ubuntu的笔记本电脑之间发送和打印消息。这是客户端,然后是服务器代码。
import socket
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ainfo = socket.getaddrinfo("ip_address_of_RaspberryPi", 1234)
#print(ainfo)
#print(ainfo[0][4])
ms.connect(ainfo[0][4])
counter = 0
while counter <= 10:
message = input("What do you want to send? Bear in mind that you only have 11 chances!!: ")
print(message)
ms.send(bytes(message,'UTF-8'))
counter += 1
ms.close()
服务器代码:
import socket
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ms.bind(('',1234))
ms.listen(5)
while True:
conn, addr = ms.accept()
data = conn.recv(1000)
if not data:
break
print(data)
conn.close()
ms.close()
我在我的Raspberry Pi上运行服务器代码,在笔记本电脑上运行客户端代码。连接成功发生但服务器只打印出我发送的第一条消息,它不会打印我要发送的其他10条消息。我真的很感激任何帮助。提前谢谢!
答案 0 :(得分:1)
您需要在循环之外执行accept()
:
import socket
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ms.bind(('',1234))
ms.listen(5)
conn, addr = ms.accept()
while True:
data = conn.recv(1000)
if not data:
break
print(data)
conn.close()
ms.close()
accept()
等待建立新连接,但您已经连接了套接字。因此,在您建立与服务器的新连接之前,此调用将被阻止。