【问题标题】:Python : rcvfrom() doesn't work in LinuxPython:rcvfrom() 在 Linux 中不起作用
【发布时间】:2013-08-12 16:14:47
【问题描述】:

下面提到的 UDP 客户端程序部分在 windows 上运行良好,看起来 rcvfrom() 函数在 linux 中被卡住了。使用 tcpdump 我可以看到到达接口的数据包。我也关闭了这个界面上的校验和/卸载。

packet = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP
packet.bind((UDP_IP, UDP_PORT))
frame_count = 0

while True :
    try:
        data= packet.recvfrom(65536)#[0:16] # buffer size is 1024 bytes
        frame_count = frame_count + 1 
        data_rx(data,frame_count)

【问题讨论】:

  • 您确定 iptables 没有丢弃这些数据包吗?你能做“iptables -F all”看看会发生什么吗?
  • 酷,这有帮助!这与 iptables -F 有什么关系???谢谢
  • 好的,看看答案。希望它会很清楚。

标签: python linux sockets udp


【解决方案1】:

通常,在 Linux 上,当您启用 iptables(IPv4 数据包过滤和 NAT-ing 工具,通过配置它,您可以在 Linux 上丢弃或接受数据包)启用默认配置会丢弃 UDP 数据包。要解决此问题,请执行以下操作:

       iptables -F all

它的作用是,刷新所有允许 udp 数据包的 iptables,但记住在生产系统上不要使用“iptables -F all”(它会刷新所有可用的链),而是找出导致丢弃数据包并修复该链。

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多