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

AContext.Connection.Socket.ReadLn 读数据的问题
客户端(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   这句就没反应了,
程序也没死机,请问怎么才能正确读到那个串呢

------解决方案--------------------
我觉得好像是这样:

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

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



------解决方案--------------------
没反应是在等待接收数据,你可以设置读取超时。