python udp socket 一个client线程只能”发送-接收“一次

发布于 2022-09-11 20:24:29 字数 877 浏览 41 评论 0

client端多线程用udp socket发送多次数据,但是一个线程只能”发送-接收“一次。

Linux 下

相关代码

class mydo(threading.Thread):

def __init__(self, id, count):
    super(mydo, self).__init__()
    self.count = count
    self.id = id
def run(self):
    while self.count > 0:
        self.count -= 1
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        request = json.dumps({"Request": ["setMessage", "Hello Shuai!!"]})
        sock.sendto(request, ('127.0.0.1', 8080))
        tmp = sock.recvfrom(1024)
        print(self.count, tmp)
        sock.close()
numOfThreads = 1
threads = []
count = 500
for i in range(numOfThreads):
    t = mydo(i, count)
    threads.append(t)
for t in threads:
    t.start()
for t in threads:
    t.join()

输出是(0, ('"Successfully!"', ('127.0.0.1', 8080)))

也就是当count变为0的时候才输出结果,然后服务器也只收到一个请求

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过去的过去 2022-09-18 20:24:29

问题应该在你的UDP服务器上,何不贴下你的server端代码。
简单几行python代码写的udp server测下来,并没有出现楼主描述的现象。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文