IdTCPClient如何接收数据

qlonsh 2008-11-03 03:27:06
IdTCPClient如何自动接收服务端(硬件设备)发来的数据?怎样实现啊,最好能给出代码!
...全文
462 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
czp9601 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 flychenjun 的回复:]
使用线程接收


Delphi(Pascal) code
unit t_Getdata;

interface

uses
Classes,windows,SysUtils,VBase, xmldom, XMLIntf,msxmldom, XMLDoc ,ACTIVEX,ADODB,Controls,dialogs;

type
TGetData = class(T……
[/Quote]

这里的GetDataList.LockList.Add(GetStreamData); GetDataList是啥我怎么编译不过
pwf825 2008-12-06
  • 打赏
  • 举报
回复
IdTCPClient.ReadLn(),用线程来读取是不需要加timer的,Indy控件好像没有用WinSocket的异步事件机制, 它们都是采用的同步Socket,我也是刚学,进来学习下
wdongchang 2008-12-04
  • 打赏
  • 举报
回复
在客户端是不是要加Timer才行?
DumDum 2008-11-03
  • 打赏
  • 举报
回复
使用线程接收

unit t_Getdata;

interface

uses
Classes,windows,SysUtils,VBase, xmldom, XMLIntf,msxmldom, XMLDoc ,ACTIVEX,ADODB,Controls,dialogs;

type
TGetData = class(TThread)
private
{ Private declarations }
GetStreamData ,
StreamData :TMemoryStream;
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy;override;
end;

implementation

uses Frm_Main, FBase, Frm_Error;

{ TGetData }

procedure TGetData.Execute;
var
TotalSize :integer;
begin
{ Place thread code here }
StreamData := TMemoryStream.Create ;
while (not Terminated) do
begin
if not FrmMain.tcConn.Connected then
begin
Terminate ;
exit;
end;
try
GetStreamData := TMemoryStream.Create;
StreamData.SetSize(0);
TotalSize:=strtoint(FrmMain.tcConn.ReadLn);
FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false);
StreamData.Seek(0,soFromBeginning);
GetStreamData.CopyFrom(StreamData,StreamData.Size);
while GetStreamData.Size < TotalSize do
begin
StreamData.SetSize(0);
FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false);
StreamData.Seek(0,soBeginning);
GetStreamData.WriteBuffer(StreamData,StreamData.Size);
end;
GetStreamData.Seek(0,soBeginning);
if GetStreamData.Size <=0 then Continue;
try
GetDataList.LockList.Add(GetStreamData);
Finally
GetDataList.UnlockList ;
end;
finally
end;
end;
FreeAndNil(StreamData);
end;

constructor TGetdata.Create ;
begin
freeonterminate := true;
inherited create(true);
end;

destructor TGetdata.Destroy;
begin
inherited Destroy;
end;


end.

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧