我正在研究c ++套接字编程...... 服务器程序绑定到套接字并开始侦听连接请求...现在,如何列出已侦听请求的IP地址? 我知道在接受连接后我可以获得IP地址但是我想不想接受来自特定IP地址的连接......
答案 0 :(得分:4)
这不能在标准套接字API方面完成。在我所知道的所有平台上,系统实际上接受连接(即用SYN + ACK TCP数据报响应),然后应用程序有机会监视待处理的请求。
答案 1 :(得分:4)
仅在Windows上,您可以使用WinSock2的WSAAccept()
函数的条件回调功能在接受连接之前访问客户端信息,甚至在接受之前拒绝连接。
答案 2 :(得分:2)
为了获得最佳性能,这可以通过在网络堆栈中进行过滤来解决,但这样做的细节将取决于操作系统(这不是套接字接口的一部分,您的应用程序通常甚至无权使用以这种方式配置您的网络堆栈。)
另一个机会是在accept
之后,此时已经在TCP级别接受连接(CONNECT ACK)。
我不认为你可以在你想要的中间阶段做到这一点。然而,无论如何,这与accept
之后的做法没有什么不同。