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 を実行でき、両方のポートが開いています。
なぜこれが起こっているのか疑問に思っていました。