我在linux上使用tcp套接字侦听传入的tcp连接。套接字是阻塞类型。
我想在调用accept()之前找出什么客户端正在尝试连接到我的套接字。更具体地说,我想知道源IP和端口。
现在,我已经进行了一些阅读,发现有人说这是不可能的,因为尚不知道源IP地址。我不明白 如果客户端通知服务器它想要连接,那么它一定已经发送了一个SYN数据包,其中包含我想要的信息,对吗?
(源)在进行TCP三向握手之前获取INADDR_ANY客户端套接字的源IP和端口?
也许他们指的是客户端。
作为服务器,我可以选择文件描述符的select()或poll()来了解要连接的客户端数量,为什么在accept()建立连接之前不能获取其IP地址和端口?
对不起,我对网络的了解还不够丰富。
谢谢你。
谢谢大家的回答。我想出了解决此问题的方法。所以我想将其发布为我自己问题的解决方案。
可以在Linux下使用iptables和netfilter_queue并过滤掉SYN数据包。然后可以从数据包中读取所需的信息,然后将其重新插入堆栈中,而无需“接受”它!
我已经尝试过了,并且有效。:)
谢谢大家的帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句