1
在我的應用程序中,我有一個服務器監聽localhost上的端口以進行客戶端連接。然後我有客戶端運行並建立與服務器的連接。我在c#中使用tcpListner作爲服務器,客戶端使用Inet函數在perl中編寫。c連接中的TCP連接丟失問題#
客戶端與服務器之間的連接建立時沒有問題,服務器接收到來自客戶端的消息。但是,大約3到4秒後,連接丟失。我使用netstat -a來查看連接的狀態是否仍然「已建立」。在DOS上使用netstat命令後,結果爲「Close_wait」。
如何調試此問題?哪一方造成連接丟失?
感謝
編輯:
$tx_socket = IO::Socket::INET->new(PeerAddr => '127.0.0.1', PeerPort => 9000,
LocalPort => 8000, Proto => 'tcp',
Type =>SOCK_STREAM, Reuse=>1) or die("$!\n");
die("init_tx_socket failed!\n") unless $tx_socket; print "Socket good!\n";
$tx_socket->autoflush(1); $tx_socket->print("Hello");
sleep(5);
$tx_socket->print("World");
你有(小)代碼樣本,再現問題? – 2010-05-01 00:19:04
在沒有更多上下文的情況下回答這個問題是非常困難的。服務器或客戶端是否在某個時候退出?大概在3到4秒內客戶做了什麼?服務器如何處理多個會話?哪一端抱怨丟失的連接:服務器,客戶端還是兩者? – 2010-05-01 00:19:34
兩端均未檢測到連接丟失。通過使用netstat命令發現連接丟失。連接狀態處於「close_wait」狀態。 我在perl腳本發出第一條消息後放置了一個睡眠函數。然後我發送第二條消息。我只收到第一條消息。睡眠函數睡眠perl腳本大約3或4秒。 這裏的Perl腳本代碼: – alex 2010-05-01 00:26:28