Indy控件 TIdTCPServer 和 TIdTCPClient的发送接收字符串 缺省都会加上0D 0A当做分隔符,如果客户端发送的字符串没有0D0A,我的服务器就不响应 OnExecute 事件,我也读不到任何字符串,
问题就是是否有设么属性设置不需要分隔符,或者有什么函数方法可以解决没有分隔符的读取字符串的问题?

解决方案 »

  1.   

    不对啊,client发什么字符,你就能收到什么字符,这根0D 0A没有关系吧,是你自己处理了吗
      

  2.   

    对方用的C写的东西,如果不加0d0a我就收不到,对方是发送二进制,但是是发的可见的字符 12345,但是我用的 OnExecute 事件里的 s := AContext.Connection.Socket.ReadLn(); 收不到 ,决定应该是换一个其他函数玩
      

  3.   

    有这回事?
    最好不要用ReadLn 等收发数据信息 
    用 二进制
      

  4.   

    给一个例子,在 OnExecute里我用什么读,要转换成字符串怎么玩?给点提示和代码
      

  5.   

    自己研究出来了,不可以使用 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);希望可以给后面的人一点帮助,不至于找百度反资料用了这么多时间
      

  6.   

    数据类型问题吧,他传过来你只能按byte类型来接收?