請教ServerSocket&From的事件斷線問題! |
答題得分者是:h@visli
|
runangel
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2005-07-19 發送簡訊給我 |
各位大大好:
小弟最近遇到一個問題:利用ServerSocket的元件來寫一個類似聊天室程式,然後力用ServerSocket事件中的ServerSocket1ClientDisconnect&ServerSocket1ClientError斷線及利用From的Close事件來斷線。可是卻遇到了如圖的情形。第一條黑線是連上線後的情形,當我利用上述ServerSocket事件來斷線此連線便完全斷線,不會有第2條黑線情形。可是如果我用From的Close事件來斷線,便會變成第2條黑線中的state->TIME_WAIT。想請教各位大大我程式,那邊寫的不正確才會造成此問題!!還請各位大大教導一下謝謝!!如問的不清楚還請見諒!
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { for(int i=0; i------------------- 學,然後知不足。 發表人 - stallion 於 2005/07/19 19:44:35 |
runangel
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2005-07-19 發送簡訊給我 |
|
runangel
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2005-07-19 發送簡訊給我 |
|
h@visli
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
你說的這種情況我剛才也測試了一遍,在XP下確實存在。
但我用: procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do ServerSocket1.Socket.Connections[i].Close; ServerSocket1.Close; end; 直接關閉所有連接,依然會出現TIME_WAIT狀態顯示。但在Windows 2000下 就不會有該現象。後來我又換用Synapse庫來測試,也同樣存在該問題。 所以我分析,這應該不是我們的程序代碼問題,而是netstat.exe的原因。 Win XP下的netstat.exe與Win 2000下的netstat.exe已不相同。 如果我們使用netstat -o 來顯示,則可以看到TIME_WAIT時, PID(進程ID) 已變為0,說明我們的程序正常退出(或斷開Socket連接)。而且,過一段時 間後,再用netstate來看,則TIME_WAIT那條線就不會再顯示了。 我建議大家使用Tcpview.exe來代替netstate.exe查看連接列表。
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
暗黑破壞神
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
建議你把 TCP/IP 的書拿起來K一下。
你該了解什麼是 TIME_WAIT。 那你就會了解你的程式為什麼會在 netstat 上面看到那樣的狀態了。^_^ 這個算是大哉問。應該說起來會是一大篇。 所以建議你去看那個 TCP/IP 那幾本算是聖經的書了。^^ ===================引 用 文 章=================== erverSocket1ClientDisconnect&ServerSocket1ClientError斷線及利用From的Close事件來斷線。可是卻遇到了如圖的情形。第一條黑線是連上線後的情形,當我利用上述ServerSocket事件來斷線此連線便完全斷線,不會有第2條黑線情形。可是如果我用From的 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |