在一台服务器上,我在 192.168.0.51 上从 192.168.0.21 上运行的应用程序接收 udp 数据包,并且必须使用特定的确认数据包进行回复。
我写的解决方案如下:
#!/bin/bash
send_ack() {
<calculate $ack - code removed>
echo -n "$ack" | nc -u -w1 192.168.0.21 8076
}
while [ 1 ]
do
for string in $(/usr/sbin/tcpdump -Avnni eth0 -c 1 dst 192.168.0.51 and udp port 8076)
do
send_ack &
done
done
问题是当数据包到达太快时我似乎有一些运行状况,我猜它们在 tcpdump 重新启动之前到达。我尝试了 -l 用于单行缓冲区而不是 -c 1 没有成功。
有人对如何解决这个问题有任何想法吗?
谢谢,期待:)