我正在使用 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 ;
我尝试了两台不同的远程服务器,一台使用 Google,另一台使用。
注意:我可以 ping 两者,并且两个端口都是打开的。
我想知道为什么会这样。