Python UDP 服务器无法接受客户端连接
Python UDP server cannot accept client connection
我想让我的服务器脚本找到一个连接到服务器的客户端,然后让服务器向客户端发回一条消息。
我已成功连接并且可以将字节从客户端发送到服务器,但是我在从服务器发送到客户端时遇到了问题。我曾尝试使用 clientSocket, address = mySocket.accept()
来查找已连接的客户端,但随后我收到错误消息:
- OSError:[WinError 10045]引用的对象类型不支持尝试的操作
服务器
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()
,因为它们永远不会处于 "connected" 状态。这也意味着您不能使用 accept()
因为 UDP 套接字不是面向连接的。您可能需要一个 SOCK_STREAM
类型的套接字。如果您确实需要 UDP(数据报)套接字,请参阅 https://www.geeksforgeeks.org/udp-server-client-implementation-c/ 了解它们如何工作的教程。
我想让我的服务器脚本找到一个连接到服务器的客户端,然后让服务器向客户端发回一条消息。
我已成功连接并且可以将字节从客户端发送到服务器,但是我在从服务器发送到客户端时遇到了问题。我曾尝试使用 clientSocket, address = mySocket.accept()
来查找已连接的客户端,但随后我收到错误消息:
- OSError:[WinError 10045]引用的对象类型不支持尝试的操作
服务器
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()
,因为它们永远不会处于 "connected" 状态。这也意味着您不能使用 accept()
因为 UDP 套接字不是面向连接的。您可能需要一个 SOCK_STREAM
类型的套接字。如果您确实需要 UDP(数据报)套接字,请参阅 https://www.geeksforgeeks.org/udp-server-client-implementation-c/ 了解它们如何工作的教程。