AContext.Connection.Socket.ReadLn 读数据的问题

squir 2007-07-17 09:42:29
客户端(C#)由socket发来一个字符串形式的XML
<?xml version="1.0" encoding="utf-8" ?>
<Message>
<head desc="test"/>
<Query>
<name>prime</>
<sex>male</sex>
<duty>manager</duty>
</Query>
</Message>
服务器端用在Indy10中(delphi2007)的TIdTCPServer接收
procedure TForm.IdServerExecute(AContext: TIdContext);
var sFile:TFileStream;FileSize,i:integer;s:string;sl:TStringList;str:TStrings;
tbs:TBytes; buf: TBytes;
begin
try
s := AContext.Connection.Socket.ReadLn;//========
s := StringReplace(s,' ','',[rfReplaceAll]);
if s <> '' then
sTel := sTel + s
else
Memo1.text := '收到消息串为'+sTel;

except
end;
但是程序在读最后一行,</Message>的时候Socket.ReadLn 这句就没反应了,
程序也没死机,请问怎么才能正确读到那个串呢
...全文
253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eastfiat 2007-08-13
  • 打赏
  • 举报
回复
没反应是在等待接收数据,你可以设置读取超时。
Larmy888 2007-08-09
  • 打赏
  • 举报
回复
我觉得好像是这样:

接收:AContext.Connection.Socket.ReadLn
发送就要 :
Socket.WriteLn
一定要配对才行

如果你的C#客户端不是这么写的,那就用AContext.Connection.Socket.InputBufferAsString


squir 2007-07-26
  • 打赏
  • 举报
回复
唉~没人知道吗~
squir 2007-07-20
  • 打赏
  • 举报
回复
这个问题有点难哦
squir 2007-07-19
  • 打赏
  • 举报
回复
没有人知道吗??

1,593

社区成员

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

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