[英]Python UDP server cannot accept client connection
我希望我的服务器脚本找到一个连接到服务器的客户端,然后让服务器向客户端发回一条消息。
我成功连接并且可以将字节从客户端发送到服务器,但我在从服务器发送到客户端时遇到了问题。 我尝试使用clientSocket, address = mySocket.accept()
来查找已连接的客户端,但随后我收到错误消息:
服务器
import socket
mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
myIP = socket.gethostname()
myPort = 1234
mySocket.bind((myIP, myPort))
while True:
clientSocket, address = mySocket.accept()
clientSocket.send(bytes("Connected", "utf-8"))
客户
import socket
myIP = socket.gethostname()
myPort = 1234
s1 = "string1"
s2 = "string2"
s3 = "string3"
mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
mySocket.sendto(bytes(s1, "utf-8"), (myIP, myPort))
mySocket.sendto(bytes(s2, "utf-8"), (myIP, myPort))
mySocket.sendto(bytes(s3, "utf-8"), (myIP, myPort))
我已经看到为此目的使用accept()
的教程,但它对我没有用。
使用SOCK_DGRAM
创建一个 UDP,而不是 TCP,套接字。 您不能在 UDP 套接字上使用send()
,因为它们永远不会在“连接的”state 中。 这也意味着您不能使用accept()
因为 UDP sockets 不是面向连接的。 您可能需要SOCK_STREAM
类型的套接字。 如果您真的想要一个 UDP(数据报)套接字,请参阅https://www.geeksforgeeks.org/udp-server-client-implementation-c/了解它们如何工作的教程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.