Indy中的IdTCPClient与IdTCPServer如何通信。(200分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
IdTCPServer如何向指定的IdTCPClient发送信息(比如是第3个连接)?
IdTCPClient如何读取从IdTCPServer发来的信息?难道只能用循环或是Timer吗?
 
http://61.132.118.185:8080/dispdocnew.php?t=&id=4984
 
源代码
ftp://61.152.210.98/Socket2.rar
ftp://61.152.210.98/chat.rar
 
我看了例程,全是用线程中+循环的方法,没有别的方法了吗?
IdTCPServer如何向指定的IdTCPClient发送信息(比如是第3个连接)?
 
看了下面那段代码吗,IdTCPServer1.Threads.LockList返回的是一个
线程列表,每一个线程表示一个连接,第三个连接就是items[2]。
用线程+循环挺好用的,总比用timer好
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i : Integer;
aThread : TIdPeerThread;
begin
if Trim(Memo2.Lines.Text) = '' then Exit;
with IdTCPServer1.Threads.LockList do
begin
try
for i := 0 to Count - 1 do
begin
aThread := Items;
aThread.Connection.WriteLn(edNickName.Text + '说:' + Memo2.Lines.Text + #10#10);
end;
Memo1.Lines.Append(edNickName.Text + '说:' + Memo2.Lines.Text);
Memo2.Clear;
finally
IdTCPServer1.Threads.UnlockList;
end;
end;
end;
 
TO Tassadar:
这段代码执行后,服务端程序没法正常退出。
 
接受答案了.
 
to:xzh2000
这段代码就是从我的一个例子copy过来的,没有你说的问题啊
 
客户端怎样知到什么时候服务器会发送数据给自己.我用TIMER定时READLN,但当读不到数据时,客户端就不能正常关闭,为什么,怎样解决?
 
后退
顶部