记一次行情组播接收调试过程
公司对接东方证券和中泰证券的行情都是使用的盛立EFH接口,在东方证券已经部署在实盘正常使用,在中泰证券部署时发现收不到行情。
中泰证券多了个行情接入认证程序,其实怀疑是否这边有问题,但是通过
1 | tcpdump -i 网口 udp |
或明确指定组播来源
1 | tcpdump -i 网口 host 组播IP |
可以抓到组播服务器发出的数据包,说明组播到达了网口,那也说明行情接入认证是成功的。
于是深入代码调试,发现
1 | // ... |
因为m_sock
被设置成了异步的,所以在没有数据时立刻返回-1,errno==EAGAIN
就是正常现象。
搜索recvfrom 始终返回-1 tcpdump可以抓到包
发现有人说是被防火墙拦截了。
1 | service firewalld.service stop |
执行后果然可以收到了,说明tcpdump
的处理在防火墙之前,可以抓到被防火墙拦截的数据。