線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3591
推到 Plurk!
推到 Facebook!

Readln Timeout問題

尚未結案
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 16:35:48 IP:61.66.xxx.xxx 未訂閱
我程式如下: IdTCPClient: TIdTCPClient;  ... msg := IdTCPClient.ReadLn(#0, 5); 想用msg= ''來判斷是否read timeoou 但是執行到此停在那行...似乎沒法判斷出server是否有傳遞資料.. 請問readln timeout正確處理方法是?    原來前面有人碰到類似問題.. 發表人 -
microbean
初階會員


發表:1
回覆:43
積分:38
註冊:2004-04-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 13:36:10 IP:210.58.xxx.xxx 未訂閱
msg := IdTCPClient.ReadLn(#0, 5); 這個語法 , 看起來並沒有錯 我在 indy 9.0.14 的版本 上面試並不會停住 你也是這個版本嗎 ? 也可能 舊的版本 有 bug _= 沒事就 winsock 一下 =_
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 18:21:41 IP:211.96.xxx.xxx 未訂閱
procedure timer.ontimer.................
var temp:string;
begin
   idtcpclient.readfromstack(false,1,false);
   while idtcpclient.InputBuffer.Size>0 do begin
      temp:=idtcpclient.ReadLn;        
   end;
end;
藏私の禁止
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 22:11:32 IP:61.59.xxx.xxx 未訂閱
之前會停住似乎是我server端問題sorry, 重試一次卻發現狀況:當沒有資料讀取到,就會停止讀取的動作,但出現 Connection closed gracefully的訊息?? 停止讀取是我所期望的,但是卻出現系統訊息.. 請問要如何才能避免Connection closed gracefully出現,只要停止讀取即可 請各位先進指點,謝
microbean
初階會員


發表:1
回覆:43
積分:38
註冊:2004-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-24 12:00:34 IP:61.62.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-25 10:38:06 IP:61.59.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-25 12:46:46 IP:61.62.xxx.xxx 未訂閱
這邊的意思是說 .. 直接執行 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-26 10:16:36 IP:61.66.xxx.xxx 未訂閱
1.我是自己寫的indy TcpstreamServer,用EXE檔執行跑出訊息ㄉ 至於EIdConnClosedGracefully確定裝好D7後就已經在Language Exceptions中 忘了跟你說,我是將server的writeln拿掉(mark)來測client的readln會怎麼反應,這樣測法正確ㄇ?若有必要可用MSN傳程式給你,煩你指教    _= 沒事就 winsock 一下 =_     發表人 -
microbean
初階會員


發表:1
回覆:43
積分:38
註冊:2004-04-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-26 10:54:57 IP:210.58.xxx.xxx 未訂閱
看起來 你可能還有做一些別的事情 我這邊簡單的測試你的 readln 這一組程式 都是正常的.. 你可以把 code , mail 給我 ..我在幫你看看. kenny@microbean.com.tw _= 沒事就 winsock 一下 =_
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-27 09:21:39 IP:61.66.xxx.xxx 未訂閱
現在標題看起來該改成如何避免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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-28 13:03:14 IP:211.96.xxx.xxx 未訂閱
這個問題一旦發生,就代表client跟server間的連接關係已經中止了,那這時還是得再連結一次,手動自動? 大部份的WINSOCK的程式開發者,包括元件的設計者,大概都會加上中斷閒置的功能,INDY也不例外,那怎麼解決這個問題,我用一個TIMER固定每30秒就送一個空訊息給SERVER,SERVER在EXECUTE時不用去處理這個空訊息,當作沒收到就好,目的就是為了騙IDTCPSERVER的元件,我們還有動作,並沒有閒置哦! 這個問題就不會再出現了............ 踹踹看唄 藏私の禁止
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-04-26 13:51:51 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-04 10:19:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!