1

我正在使用 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 两者,并且两个端口都是打开的。

我想知道为什么会这样。

4

1 回答 1

0

我是@alexfontaine 的同事,我们发现这个问题实际上是由我们办公室的网络设置引起的,与上面的连接代码无关。

看到这个问题 DHCP IP address have access to the internet but static IP address don't behind a router

我没有删除这个问题,而是用另一个问题来回答下一个可能也有这个问题的人。

于 2011-11-03T22:11:28.833 回答