1

RTOS デバイスを使用していますが、TCP 経由でサーバーに接続しようとすると、異常な結果が発生します。

ローカル ネットワーク上のサーバーに接続すると、接続は問題なく、Wireshark でパケットが流れていることがわかります。

ただし、ドメイン外のリモート サーバーに接続しようとすると、次のエラー コードで接続に失敗します。

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 ;

2 つの異なるリモート サーバーで試してみました。1 つは Google で、もう 1 つは Google です。

注: 両方に ping を実行でき、両方のポートが開いています。

なぜこれが起こっているのか疑問に思っていました。

4

1 に答える 1

0

私は @alexfontaine の同僚であり、この問題は実際にはオフィスのネットワーク設定が原因であり、上記の接続コードとは何の関係もないことがわかりました。

この質問を参照してください DHCP IPアドレスはインターネットにアクセスできますが、静的IPアドレスはルーターの背後にありません

この質問を削除する代わりに、この問題を抱えている可能性のある次の人のために別の質問で答えています.

于 2011-11-03T22:11:28.833 に答える