非本地 IP 的套接字侦听器不起作用
Socket listener to no-local IP is not working
我有一些代码可以使用我的本地IP,但是当我尝试侦听非本地IP(来自同一网络)时,此代码不起作用。显然,我的"选择"子句不再起作用。
while(IsReading() && IsConnected())
{
FD_ZERO(&lReader);
FD_SET(GetConnection(), &lReader);
int lHasData = select(GetConnection()+1, &lReader, NULL, NULL, NULL);
if (lHasData > 0)
{
//Accept and read socket...
}
}
正如我所说,这对我自己的 Ip 非常有效,但是当我尝试从我的 newtwork 中监听其他 IP/端口时(它是 Asterisk 服务器,我想听它以接收我的操作和调用的响应),"选择"就像没有数据到达一样。
我的非本地 IP 代码有问题吗?
感谢您的提前
您不能"侦听非本地IP",无论是否"来自同一网络"。套接字只能绑定到本地地址。您一定忽略了以前的一些错误。否则你的问题措辞不好。
一般来说这是不可能的。根据设计,以 IP 为目标的数据包仅路由到具有该 IP 的计算机。仅仅因为您已经开始侦听该IP,就不会使路由器神奇地改变主意并开始将其他人的数据包发送到您的计算机。
有时可能是可能的,例如,当您和另一台机器通过哑集线器连接时,该集线器将每个人的传输重新转换为每个人,并且您的接口进入混杂模式(即它配置为不丢弃针对非本地IP的数据包)。如果这是您要实现的目标,则需要确保两台计算机都连接到集线器,而不是交换机,并查阅操作系统文档,了解如何将网络接口切换到混杂模式。
相关文章:
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- Windows 2012 R2 closesocket()挂在侦听套接字上
- C++ 套接字侦听器 accept() 在发布时不接受连接请求
- IPv6 和 IPv4 的套接字侦听器
- 轮询TCP套接字空闲侦听
- 非本地 IP 的套接字侦听器不起作用
- 在 C/Unix 中的 IP 子网上侦听的套接字
- IP_ADD_MEMBERSHIP套接字上,套接字是否也会侦听单播
- 即使在文件描述符不可用的情况下,也能有效地侦听多个套接字
- 无法使用UDP套接字c++进行侦听
- 我可以对多个侦听套接字使用相同的boost::asio::io_service吗
- c侦听器与winsock-sender dll之间的套接字通信
- 如何在不相互阻塞的情况下使用套接字和计时器
- Boost套接字/接收器无法在同一端口上侦听/连接
- 在fork()之后关闭侦听套接字
- 我如何设置一个不断侦听循环与接收udp套接字,而不使它成为一个服务器
- 提升 Asio UDP 服务器设置套接字以侦听指定的 IP
- 如何在winsock2c++中停止/重新启动侦听和接受服务器套接字?
- 创建多个侦听套接字