【问题标题】:Python UDP socket send and receive data at the same timePython UDP套接字同时发送和接收数据
【发布时间】:2013-11-19 14:17:29
【问题描述】:

我正在使用 Python 中的 UDP 创建一个简单的套接字服务器,我想通过让接收器发送 ACK 来添加一些可靠性概念。我的发件人必须同时发送数据和接收这些 ACK。这样做的首选方法是什么?我应该同时创建发送和接收线程,使用某种非阻塞调用还是其他方式?

任何帮助将不胜感激!

【问题讨论】:

  • 有什么理由不能只使用 TCP,而无需这样做?
  • 这是我参加的课程的要求。我希望我能做到!
  • 你可以在一个线程上完成。事件将排队一段时间。只要您阅读它们的速度足够快,就应该在单个线程上很好。
  • 单线程、非阻塞 I/O 和 select() 就足够了,只要您的线程在事件循环期间不花费大量时间进行计算(等)。

标签: python sockets udp


【解决方案1】:

有几个解决方案:

  • 最简单的解决方案是在 stdlib 中,SocketServer 具有 UDPServer 的模块 - 您可以为不同的消息类型设置处理程序并以这种方式启用您的状态机。还有一堆漂亮的混合线程和其他行为。

  • 使用 libevent 进行异步网络编程的第三方模块 gevent 是另一种解决方案。

  • 您可以使用scapy 在原始套接字级别编写一些内容,但这会将所有繁重的工作都交给您,尽管毫无疑问有一些示例可以说明如何做您想做的事情。

【讨论】:

    猜你喜欢
    • 2015-02-21
    • 2010-11-13
    • 2016-01-23
    • 2016-07-28
    • 1970-01-01
    • 2019-07-04
    • 2013-12-01
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多