procedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);
var
strPLen: string;
begin
SetLength(strPLen,100);
AThread.Connection.ReadBuffer(PChar(strPLen)^, 100);
...............
end;
ReadBuffer时,若长度小于包实际长度,将出于阻塞状态。
此时:我想AThread.Connection.Disconnect。
请问如何处理。
var
strPLen: string;
begin
SetLength(strPLen,100);
AThread.Connection.ReadBuffer(PChar(strPLen)^, 100);
...............
end;
ReadBuffer时,若长度小于包实际长度,将出于阻塞状态。
此时:我想AThread.Connection.Disconnect。
请问如何处理。
解决方案 »
- 类似Grid组件中,如果复制单元格的内容到剪贴板?
- 关于delphi中使用excel的问题,请大虾赐教,高分等你拿
- 要怎样用DecisionGrid实现交叉表的功能呢
- win2000下如何写注册表?
- 为什么用dephi自带的数据库database Desktop建立的表,在程序中做查询时经常查不出数据来
- 请教数据导入导出问题!
- 我想把treenode.data设成整型数字,怎么设啊?
- 求教?????
- 怎样将一个文本文件的内容付给一个 string 变量
- 请问怎样在窗口的最小化,最大化按钮的旁边再加一个自定义的按钮呢
- Delphi如何删除最大化按钮?
- 数据集过滤,为什么区分大小写?怎么样能不区分大小写。
ReadBuffer时,若长度大于包实际长度,将出于阻塞状态。
根据这个大小去设置接收缓冲
var
strPLen: string;
size:integer;
begin
size:=AThread.Connection.ReadInteger;//先读出发送过来的数据大小
SetLength(strPLen,size);//设置数据大小
AThread.Connection.ReadBuffer(PChar(strPLen)^, size);//这样就可以了
...............
end; 不过要应该上面给出的代码,前提是发送端必须先发送数据大小,再发送数据