请指教,关于IndyTCPClient控件运行时非法操作的问题! |
尚未結案
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
jackalan 你好: (1)TIdTCPClient 這個元件的確是沒有 OnExecute 事件所對應的 event procedure (2)所以,建議你反過來設計,讓 Client 端週期性 (例如: 每隔 10 秒) 的向 Server 端發送訊息,然後 Server 端在 OnExecute 事件所對應的 event procedure 裡面回應 Client 一個 ACK,讓彼此都知道尚未不正常斷線!! (3)所以你在 Server 端要做一個計數器,記錄所有連上來的 Client 已經多久 沒有發送訊息,當超過一定的秒數 (例如: 20 秒) 沒有收到某個 Client 的 訊息的話,就判定該 Client 已經不正常斷線!!-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/18 22:43:22
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 版主您好! 我现在的确是这样做的,但我的问题并不在这里,由于在客户端我需要实时接受服务端的命令,所以只好不断读取READLN('',1),来判断有无命令过来,但运行大约4到5分钟客户端就非法操作了,我怀疑是不是多次不断的READLN会出问题,开始我用线程做的过后改用TIMER作,接受的时间改成100MS还是出错,请版主帮忙看看,应该怎么做?jackalan 你好: 那...要不要先試試 TIdUDPServer 元件的做法? src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
谢谢大家的帮忙,我自己搞定了,问题有两个,说出来给大家参考,避免以后出我同样的问题,1、出在WRITELN数据过长,虽然STRING发送没有限制但如果过长还是会没有响应的,应该把过长的STRING分几次发送就可以了。2、服务器接受命令后用LISTBOX存储的,然后由线程慢慢消化,但LISTBOX.ITEM.ADD对长度是有限制的,这个你可以试试就知道了,改成LISTVIEW后解决了这个问题,那个断线的问题就是因为LISTBOX超过长度导致一个异常引起的,呵呵,谢谢大家的帮忙!尤其谢谢版主!
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |