Indy10 IdTCPClient 控件向 Server时,如果要发送的数据包含#10时怎么处理??

我TMD就是天才 2008-07-08 04:48:27
请教:Indy10 IdTCPClient 控件向 Server时,如果要发送的数据包含#10时怎么处理??

例子
Var CMD:String;
begin
CMD:=#1+#1+#1+#10+#2+#2+#2;
IdTCPClient.IdTCPClient.IOHandler.WriteLn(CMD);
end;

这样发出去的并不是一个数据包:#1+#1+#1+#10+#2+#2+#2,
而是发送了两个数据包,第一个数据包为#1+#1+#1;第二个数据包为#2+#2+#2;#10这个字节会丢失,
#10被当作了分包符来处理了...
但如果我现在就是要发#1+#1+#1+#10+#2+#2+#2这长度为7个字节的数据到Server,有没有什么办法??
请大虾指教!
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyq 2008-08-18
  • 打赏
  • 举报
回复
CMD.c_str() => PChar(CMD)
我TMD就是天才 2008-07-30
  • 打赏
  • 举报
回复
To sczyq:
write方法的参数只有一个,为何
IdTCPClient.IdTCPClient.IOHandler.Write(CMD.c_str(), Length(CMD));的参数会有两个呢
CMD.c_str()是什么意思,编译不过去.
我TMD就是天才 2008-07-30
  • 打赏
  • 举报
回复
不好意思,公司这几天都不能上网....
TClientSocket有SendStream方法
但TIdTCPClient冒似没有SendStream方法,望大虾指教下如何用TIdTCPClient发送流
xuyfufeng 2008-07-19
  • 打赏
  • 举报
回复
换一种发送方式,不要使用writeLn和ReadLn
oushengfen 2008-07-17
  • 打赏
  • 举报
回复
对采用流来实现,writeln是只发送一行,
sczyq 2008-07-16
  • 打赏
  • 举报
回复
WriteLn 与 ReadLn 均使用 #10 与 #13 来换行的,要使用发送流才能解决。

Var CMD:String;
begin
CMD:=#1+#1+#1+#10+#2+#2+#2;
IdTCPClient.IdTCPClient.IOHandler.Write(CMD.c_str(), Length(CMD));
end;

1,593

社区成员

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

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