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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python UDP服务器无法接受客户端连接相关的知识,希望对你有一定的参考价值。

我希望我的服务器脚本找到已连接到服务器的客户端,然后让服务器将消息发送回该客户端。

我已成功连接,可以从客户端向服务器发送字节,但是从服务器向客户端发送时遇到了问题。我尝试使用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(),因为它们永远不会处于“已连接”状态。这也意味着您不能使用accept(),因为UDP套接字不是面向连接的。您可能需要一个SOCK_STREAM型插座。如果您确实想要UDP(数据报)套接字,请参阅https://www.geeksforgeeks.org/udp-server-client-implementation-c/,以获取有关其工作原理的一个教程。

以上是关于Python UDP服务器无法接受客户端连接的主要内容,如果未能解决你的问题,请参考以下文章

python3套接字udp设置接受数据超时

erlang udp服务器无法接收接受数据包

python socket模块

socket库:Python实现UDP客户和服务器通信

socket库:Python实现UDP客户和服务器通信

Python学习之——Socket套接字(UDP连接)