如何在接受C ++连接之前获取客户端IP地址

时间:2012-05-23 20:21:59

标签: c++ sockets ip

我正在研究c ++套接字编程...... 服务器程序绑定到套接字并开始侦听连接请求...现在,如何列出已侦听请求的IP地址? 我知道在接受连接后我可以获得IP地址但是我想不想接受来自特定IP地址的连接......

3 个答案:

答案 0 :(得分:4)

这不能在标准套接字API方面完成。在我所知道的所有平台上,系统实际上接受连接(即用SYN + ACK TCP数据报响应),然后应用程序有机会监视待处理的请求。

答案 1 :(得分:4)

仅在Windows上,您可以使用WinSock2的WSAAccept()函数的条件回调功能在接受连接之前访问客户端信息,甚至在接受之前拒绝连接。

答案 2 :(得分:2)

为了获得最佳性能,这可以通过在网络堆栈中进行过滤来解决,但这样做的细节将取决于操作系统(这不是套接字接口的一部分,您的应用程序通常甚至无权使用以这种方式配置您的网络堆栈。)

另一个机会是在accept之后,此时已经在TCP级别接受连接(CONNECT ACK)。

我不认为你可以在你想要的中间阶段做到这一点。然而,无论如何,这与accept之后的做法没有什么不同。

相关问题