0

下面提到的 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)
4

1 回答 1

0

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

       iptables -F all

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

于 2013-08-12T16:55:57.400 回答