我使用TIdMappedPortTCP中的OnExecute事件想接受数据,可是Athread.NetData是一个String类型的,可是我要接受的数据有可能使用的是string不能显示的内容,是不是要使用Athread.Connection.InputBuffer.Read函数呢还是使用Athread.Connection.ReadBuffer函数呢???
我使用了Athread.Connection.InputBuffer.Read函数它的返回值应该是得到的数据长度,可是为什么它都是0呢????请高手帮助!!!
我使用了Athread.Connection.InputBuffer.Read函数它的返回值应该是得到的数据长度,可是为什么它都是0呢????请高手帮助!!!
将它放入一内存块中
爱怎么处理都可以这控件有BUG
如果你看了源码
发现还不如自己实现Mapped/Proxy功能
var
Data:String;
PData:Pchar;
PDataInt:Int64;
CharArray:array [0..1023] of char;
begin
if Athread.Connection.Connected and Athread.OutboundClient.Connected then
begin
FillChar(CharArray,1024,#0);
PDataInt:=Athread.Connection.InputBuffer.Size;
Data:=Athread.Connection.InputBuffer.Extract(Athread.Connection.InputBuffer.Size);
PDataInt:=Athread.Connection.InputBuffer.Size;
Athread.Connection.ReadBuffer(CharArray,PDataInt);
Application.MessageBox('asdf','asdf',MB_OK);
end
else
begin
Athread.Terminate;
end;
end;可是发现得到的总是不正确,为什么呢???
1 PDataInt:=Athread.Connection.InputBuffer.Size;
Data:=Athread.Connection.InputBuffer.Extract(Athread.Connection.InputBuffer.Size);
2 PDataInt:=Athread.Connection.InputBuffer.Size;
Athread.Connection.ReadBuffer(CharArray,PDataInt);
直接
2 PDataInt:=Athread.Connection.InputBuffer.Size;
Athread.Connection.ReadBuffer(CharArray[0],PDataInt);readbuffer必须把指针的第一个值传过去