Readln Timeout問題 |
尚未結案
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
microbean
初階會員 ![]() ![]() 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
|
japhenchen
高階會員 ![]() ![]() ![]() ![]() 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
microbean
初階會員 ![]() ![]() 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
Connection Closed Gracefully
在 indy 是一個常見的訊息 , 這通常是表示 Server 主動把 client
斷線了 . 你只會在 debug mode 中看到這個訊息 , 如果在 run time , 就不會出現
所以 你可以忽略掉這個錯誤訊息. 但是如果你也不想在 debug mode 中被干擾.
你可以把 EIdConnClosedGracefully 加到 Debugger Options
裡面的 Language Exceptions , 也就是直接忽略掉這個訊息. 詳細的細節 可以參考此篇文章
http://www.swissdelphicenter.ch/en/showarticle.php?id=1 _= 沒事就 winsock 一下 =_ 發表人 - microbean 於 2004/04/24 12:02:03
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
microbean你好,經過你的說明我還是有些問題:
1.我裝好Delphi 7後,本就已經有Indy EIdConnClosedGracefully
Exception ADD在Language Exceptions,Dubeg mode是不會出現任何訊息可
以確定,但是我上面所說出現系統訊息卻是出現在"Run time",這跟你所說
run time就不會出現,好像不太符合? 2.能請問一下readln(,)中第一個參數為#10或#13或#13+#10這三種時
各有什麼意義? _= 沒事就 winsock 一下 =_
|
microbean
初階會員 ![]() ![]() 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
這邊的意思是說 ..
直接執行 exe , 不要在 delphi 的 debug mode 下執行 .
但如果你有加 EIdConnClosedGracefully 的 ignore 應該
是不會發生. 如果你在非 debug 的狀態下出現這個錯誤訊息 .
可以讓我知道 你連的 Server 是什麼 , 是 web server ,
還是自己寫的 indy server or ??
這可能會跟 server 與 client 的斷線行為有關
或者 你可以替 readln 這一行 , 加上 try exception .
然後把這個 error 排除掉 . readln 的第一個參數 是 Terminator ,
也就是說 , 讀到什麼字元後 , 回傳收到的內容 .
如果是 #10 , 就是一讀到 #10 就回傳 , 不管後面
是否還有資料 .其他的以此類推 _= 沒事就 winsock 一下 =_
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
microbean
初階會員 ![]() ![]() 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
現在標題看起來該改成如何避免closed Gracefully訊息出現(執行階段),
我自己想到用try ..except..end好像可以避免掉,.....
try
放程式內容
except
on Myerror: EIdConnClosedGracefully do
begin
放exception處理
end;
end;
記得 要uses IDExcption
_= 沒事就 winsock 一下 =_ 發表人 - Komuro 於 2004/04/27 09:25:14 發表人 - Komuro 於 2004/04/27 09:56:24 發表人 - Komuro 於 2004/04/27 10:03:21 發表人 - Komuro 於 2004/04/27 13:18:20
|
japhenchen
高階會員 ![]() ![]() ![]() ![]() 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
這個問題一旦發生,就代表client跟server間的連接關係已經中止了,那這時還是得再連結一次,手動自動? 大部份的WINSOCK的程式開發者,包括元件的設計者,大概都會加上中斷閒置的功能,INDY也不例外,那怎麼解決這個問題,我用一個TIMER固定每30秒就送一個空訊息給SERVER,SERVER在EXECUTE時不用去處理這個空訊息,當作沒收到就好,目的就是為了騙IDTCPSERVER的元件,我們還有動作,並沒有閒置哦! 這個問題就不會再出現了............ 踹踹看唄 藏私の禁止
|
Ktop_Robot
站務副站長 ![]() ![]() 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |