gpt4 book ai didi

delphi - TClientSocket : what is the difference between SendBuffer and SendStream?

转载 作者:行者123 更新时间:2023-12-03 18:28:57 24 4
gpt4 key购买 nike

大家好,我的任务是实现与服务器通信的协议(protocol)。我有一个难题,也许足够熟练的人可以启发我。当我连接到服务器时,我必须发送一个字节数组问题是当我使用它时我从服务器断开了 imediatley:

  var 
buffer : array [0..200] of byte;
begin
ClientSocket1.Socket.SendBuf(buffer[0],length(buffer));
end;

但是当我使用它时它工作正常:
   var 
buffer : array [0..200] of byte;
mem_ste : TMemoryStream;
begin
mem_ste := TMemoryStream.Create;
mem_ste.Write(buffer[0],length(buffer));
ClientSocket1.Socket.SendStream(mem_ste);
end;

有什么合乎逻辑的原因请告诉我。谢谢。

最佳答案

在第一个代码中,您发送了 201 字节的未初始化垃圾,因此服务器将您踢走也就不足为奇了。

在第二个代码中,您将 201 字节的未初始化垃圾写入流中,但随后没有通过套接字发送任何内容,因为当前的 Position流的属性仍然在流的末尾——没有什么要发送的。 SendStream从当前流位置开始并读取直到它到达末尾。

关于delphi - TClientSocket : what is the difference between SendBuffer and SendStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com