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');
請問 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');