發起 AMQP 握手時的 TCP RST

發起 AMQP 握手時的 TCP RST

我在 OpenWRT (ar71xx) 上執行rabbitmq-c v0.8.0,裝置充當 LAN 中的用戶端。同一系統在不同路由器後面的表現似乎有所不同。

我看到的問題是(這是我的程式碼的一部分):

_socket  = amqp_tcp_socket_new( _connection );

if( _socket == NULL )
{
    log_error( "connect(): can't create a new socket");
    return false;
}

status = amqp_socket_open_noblock( _socket, _host.c_str(), _port, &_openTimeOut);

if( status  !=  AMQP_STATUS_OK  )
{
    log_error( "connect(): can't open socket: %d", status);
    return false;
}

在這裡,不確定返回的錯誤是-13 o -9。在深入研究rabbitmq-c程式碼後,我了解到這兩個返回程式碼主要依賴 poll() 或 connect() 調用,但我看不出這裡可能發生哪種可能的情況。

另一方面,正如我所提到的,這種情況發生在兩個不同的路由器後面;在其中一個(成功的)中,我看到在 DNS 查詢獲取伺服器擁有的主機 IP 後,客戶端發送 TCP SYN 並由伺服器確認,而在另一個中,客戶端發送 SYN,伺服器ACK 和客戶端立即發送RST,這可能意味著它表明它正在關閉連線。

我想了解在什麼情況下,rabbitmq 用戶端可以向伺服器發出 RST。

相關內容