TIdPeerThread(AThread).Connection.Write(msg);
如何使用tidtcpclient来收取。
因为我用TIdTCPClient.readln收取不到
用它的函数都不行,我不会用特请教大家。
谢谢
如何使用tidtcpclient来收取。
因为我用TIdTCPClient.readln收取不到
用它的函数都不行,我不会用特请教大家。
谢谢
解决方案 »
- 加急发送邮件,附件出现问题。
- 关于控件dbgrideh,急啊,谢谢了
- 关于spcomm控件,有什么相关书籍可查阅?
- 在按钮单击事件中如何获得按钮Name??
- 請問RECORD裏能不能用動態數組?
- 再请教一个存储过程的条件判断问题
- 不太懂的问题
- DELPHI通用技术问题,考验您的技术深度,如何实现DBGRID或DBGRIDEH中代码字段的代码和名称的显示
- ACCESS短日期型,语句怎么写?
- 推荐一个好的风扇!!我用AMD的CPU!!!谢谢!!!!
- 诸位大虾,请问如何在Delphi6中操作Word2000的文档(包括图片)排版?
- 关于汇总报表显示时,如何将StringGrid或者DbGrid相邻的几个单元格合并?
你发端也得发回车换行作为结尾的数据。
发送端你可以用Writeln代替Write,或者Write(msg+#13#10)
不過在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;