請問Indy的一些使用問題 |
答題得分者是:Stallion
|
liangyenchen
一般會員 ![]() ![]() 發表:6 回覆:5 積分:2 註冊:2007-01-20 發送簡訊給我 |
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
client:
請問 indy不管是tcp還是udp 傳送訊息只有馬上接訊息的規則嗎? 有 onRead的事件可以使用嗎? 當然,使用過Ping沒有?不是有個TTL嗎?當一個封包超過那個時間就會被Router丟掉,不在一定時間讀取,訊息是會不見的! OnRead是Client當發現有訊息進來的事件,讀取訊息就在那個事件裡面處理。 server: 請問可以知道 每個client的編號 藉由編號 回傳想要的值 給特定編號的client端嗎? 寫過你就知道! Server端會為每個連進來的Client儲存一個連線資訊,如果沒記錯的話是Socket Handle吧!運用這個Handle來辨識每個Client,動手去做一做可以有更深刻的印象! |
liangyenchen
一般會員 ![]() ![]() 發表:6 回覆:5 積分:2 註冊:2007-01-20 發送簡訊給我 |
===================引 用 Stallion 文 章=================== client: 請問 indy不管是tcp還是udp 傳送訊息只有馬上接訊息的規則嗎? 有 onRead的事件可以使用嗎? 當然,使用過Ping沒有?不是有個TTL嗎?當一個封包超過那個時間就會被Router丟掉,不在一定時間讀取,訊息是會不見的! OnRead是Client當發現有訊息進來的事件,讀取訊息就在那個事件裡面處理。 server: 請問可以知道 每個client的編號 藉由編號 回傳想要的值 給特定編號的client端嗎? 寫過你就知道! Server端會為每個連進來的Client儲存一個連線資訊,如果沒記錯的話是Socket Handle吧!運用這個Handle來辨識每個Client,動手去做一做可以有更深刻的印象! ------實做如下-------- clinet: thread模擬onread TClientExecute = class(TThread) private FReadStr: String protected procedure ShowOnForm; public procedure execute;override; end; procedure TClientExecute.execute; var str:string; begin FReadStr := Form1.IdTCPClient1.IOHandler.ReadLn; Synchronize(ShowOnForm); end; procedure TClientEXecute.ShowOnForm; begin form1.memo1.lines.add(FReadStr); end; server: 當clients連進來後 onbuttondown事件(將來放server onexecute事件中) for i:=0 to idtcpserver1.Contexts.LockList.Count -1 do TIdContext(idtcpserver1.Contexts.LockList.Items[i]).Connection.IOHandler.writeln('0000'); 不過,執行 並非預期 不知是哪邊出錯 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |