繁体   English   中英

Python UDP 服务器无法接受客户端连接

[英]Python UDP server cannot accept client connection

我希望我的服务器脚本找到一个连接到服务器的客户端,然后让服务器向客户端发回一条消息。

我成功连接并且可以将字节从客户端发送到服务器,但我在从服务器发送到客户端时遇到了问题。 我尝试使用clientSocket, address = mySocket.accept()来查找已连接的客户端,但随后我收到错误消息:

  • OSError: [WinError 10045] 引用的 object 类型不支持尝试的操作

服务器

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM