我正在使用RTOS设备,当尝试通过TCP连接到服务器时,我遇到了一些不寻常的结果。
当连接到本地网络上的服务器时,连接正常,我可以看到在Wire shark上流动的数据包。
但是,当尝试连接到我的域外的远程服务器时,连接失败,错误代码为:
TCP_ERR_NOSUCH_SOCKET(-4)---表示您试图分配一个套接字 不存在。
这在connect()函数期间发生:
bool CTCP::Connect( const char * ipaddr, unsigned short port ) {
IPADDR ip = AsciiToIp( ipaddr ) ;
this->m_fdnet = connect( ip, INADDR_ANY, port, TICKS_PER_SECOND * 3);
if( this->m_fdnet < 0 ) {
CLogging::Debuglogf("[TCP] Error: Connection failed, error=[%d]", getsocketerror( this->m_fdnet ) );
return false;
}
return true ;
我试过两个不同的远程服务器,一个用谷歌,另一个用。
作为注释:我能够ping两个,并且两个端口都是打开的。
我想知道为什么会这样。
答案 0 :(得分:0)
我是@alexfontaine的大家,我们发现这个问题实际上是由我们办公室的网络设置引起的,与上面的连接代码无关。
看到这个问题 DHCP IP address have access to the internet but static IP address don't behind a router
我没有删除这个问题,而是回答另一个可能有这个问题的人的问题。