TIdPeerThread(AThread).Connection.Write(msg);
如何使用tidtcpclient来收取。
因为我用TIdTCPClient.readln收取不到
用它的函数都不行,我不会用特请教大家。
谢谢 

解决方案 »

  1.   

    TIdTCPClient.readln是读到回车换行才返回的。
    你发端也得发回车换行作为结尾的数据。
    发送端你可以用Writeln代替Write,或者Write(msg+#13#10)
      

  2.   

    简介: 1. Client端與Server端都必須是實體IP或虛擬IP才行。
    不過在Indy的元件中,卻可以解決以上的問題,也就是只要你有對外網路,而TCPServer在實體ip,就可以像ICQ一樣,可以進行chat,這是clientsocket所無法提供的。
    不過,在Delphi 6的範例中,只能夠達到傳送資料,並沒有介紹有關於Chat的互動功能。看了Indy元件的事件解說發現:
    1. Server端可以輕易的使用OnExecute事件,來判定是否有從Client端送來的資料。
    2. Client端無法利用Event來判斷是否有從Server端送來的資料,本來作者以為可以使用onwork來判定,不過並沒有辦法。
    這當然也是筆者一直在考慮使用clientsocket或indy元件的原因。直到最近,筆者查詢相關文件後,發現可以利用Ttimer元件,配合Indy元件ReadlnTimeout的方式,來替代Event,方式如下:
    procedure TForm1.Timer1Timer(Sender: TObject);
    var s:string;
    begin
    s:=IdTCPClient1.ReadLn(‘‘,3); //表示當獨到為空字串時結束。
    if s<>‘‘ then
    memo1.Lines.Add(s)
    end;