对方用的C写的东西,如果不加0d0a我就收不到,对方是发送二进制,但是是发的可见的字符 12345,但是我用的 OnExecute 事件里的 s := AContext.Connection.Socket.ReadLn(); 收不到 ,决定应该是换一个其他函数玩
有这回事? 最好不要用ReadLn 等收发数据信息 用 二进制
给一个例子,在 OnExecute里我用什么读,要转换成字符串怎么玩?给点提示和代码
自己研究出来了,不可以使用 ReadLnprocedure TForm5.TCPServerExecute(AContext: TIdContext); var len:integer; s:string; buffer:TBytes; begin len :=AContext.Connection.IOHandler.InputBuffer.Size; if len > 0 then begin AContext.Connection.IOHandler.ReadBytes(buffer, len, false); //转化成字符串 s := stringof(buffer); Self.Console.Lines.Add(s); end;end;发送用 buffer := bytesof(Edit3.Text); BzAContext.Connection.IOHandler.Write(buffer);希望可以给后面的人一点帮助,不至于找百度反资料用了这么多时间
最好不要用ReadLn 等收发数据信息
用 二进制
var len:integer;
s:string;
buffer:TBytes;
begin
len :=AContext.Connection.IOHandler.InputBuffer.Size; if len > 0 then
begin
AContext.Connection.IOHandler.ReadBytes(buffer, len, false); //转化成字符串
s := stringof(buffer); Self.Console.Lines.Add(s);
end;end;发送用
buffer := bytesof(Edit3.Text);
BzAContext.Connection.IOHandler.Write(buffer);希望可以给后面的人一点帮助,不至于找百度反资料用了这么多时间