我服务器用TIdTCPServer的ReadLn()接收来自客服端的数据,这些数据里可能会有0d 0a,当遇到这个时就会出错,怎么解决?很少用delphi。请大家帮帮忙

解决方案 »

  1.   

    那就别readln了,od oa是换行的,你还是读取二进制流吧,Execute事件中AThread.Connection.ReadBuffer
      

  2.   

    接收用ReadBuffer
    发送用WriteBuffer
      

  3.   

    顶2位高手,紧跟高手的脚步
    indy
    AThread.Connection.ReadBuffer
      

  4.   

    客服端不由我控制,那边怎么发我不知道啊。
    其实是这么个事,别人通过网页post一个文件,我这端接受。这时可能会有回车啊 
      

  5.   

    ReadLn()第1个参数是读取数据结束符号,默认是#10(即换行)。改一个别的看看,不行就没办法了
      

  6.   

    别人怎么发是他的事 
    你自己 用ReadBuffer接收就行了!
      

  7.   

    我用的是INDY10,怎么没看到那个ReadBuffer?好像和INDY9有点不同,Execute事件的参数是TIdContext,不是上面说的AThread。我该怎样才能调用这个函数?
      

  8.   

    有2种方法可读入
    我这里讲一种我用的,
    RxBuf:TIdBytes;   
    AContext.Connection.IOHandler.readBytes(RxBuf, SizeOf (Paquete));
       Idglobal.BytesToRaw(RxBuf, Paquete, SizeOf (Paquete));我读入的东西在Paquete包里,当然Paquete的属性你自己要定义。发送是
    RxBuf := Idglobal.RawToBytes(Paquete, SizeOf (Paquete));
     AContext.Connection.IOHandler.Write(RxBuf);
    但你不需要发送,对否。