Python中文
首页
教程
问答
标签
搜索
登录
注册
Python中正确处理UDP的多处理方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图实现一个简单的UDP客户端和服务器。服务器应该接收一条消息并返回一条经过转换的消息。在</p> <p>我对服务器的主要技术是在循环中侦听UDP消息,然后为每个传入消息生成<code>multiprocessing.Process</code>,并在每个<code>Process</code>实例中发送回复:</p> <pre><code>class InputProcessor(Process): ... def run(self): output = self.process_input() self.sock.sendto(output, self.addr) # send a reply if __name__ == "__main__": print "serving at %s:%s" % (UDP_IP, UDP_PORT) sock = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock.bind((UDP_IP,UDP_PORT)) while True: data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes print "received message: %s from %s:%s" % (data, addr[0], addr[1]) p = InputProcessor(sock, data, addr) p.start() </code></pre> <p>在test client中,我做如下操作:</p> ^{pr2}$ <p>我在上面的代码中遇到的问题是,当<code>REQUESTS_PER_SECOND</code>高于某个值(~50),似乎有些客户端进程接收到指定给不同进程的响应,即进程1接收进程2的响应,反之亦然。在</p> <p>请尽量批评我的代码,因为我是网络编程新手,可能会错过一些明显的东西。也许出于某种原因,使用Twisted,hovewer会更有价值和更好,我对理解其内部结构非常感兴趣。谢谢。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>非常感谢大家!似乎我已经找到了我的代码失败的原因了。我在客户机中使用<code>multiprocessing.Manager().dict()</code>来检查来自服务器的结果是否正确。但是,我没有使用任何锁来包装对<code>dict()</code>的一组写操作,因此尽管服务器的输出是正确的,但还是出现了很多错误。在</p> <p>很快,在客户机中,我执行了错误的服务器响应检查。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
10 回答
如何添加表示整数的擦边字符串?
1 回答
如何添加要在Bokeh中使用的新font.ttf文件?
10 回答
如何添加要显示的矩阵XY轴编号和XY轴
5 回答
如何添加计数?
7 回答
如何添加计数器函数?
8 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
4 回答
如何添加计数器来跟踪while循环中的月份和年份?
6 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
2 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
4 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
9 回答
如何添加评论拉梅尔亚姆
9 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
6 回答
如何添加谷歌地点自动完成到Flask?
10 回答
如何添加超时、python discord bot
3 回答
如何添加超过1dp的检查
10 回答
如何添加距离方法
7 回答
如何添加跟随游戏的敌人精灵
3 回答
如何添加路径以便python可以找到程序?
10 回答
如何添加身份验证/安全性以使用happybase访问HBase?
5 回答