相关疑难解决方法(0)

TIdTCPServer有时不会从套接字读取数据

我在TIdTCPServer的OnExecute中有以下代码(随安装附带的Delphi 2009和Indy 10),这与本网站上的其他示例非常相似;

   Socket := AContext.Connection.Socket;
    if Socket.CheckForDataOnSource(10) then
    begin
      if not Socket.InputBufferIsEmpty then
      begin
        Socket.InputBuffer.ExtractToBytes(RawBytes, -1, False, -1);

        SetLength(Buffer, Length(RawBytes));
        Move(RawBytes[0], Buffer[1], Length(RawBytes));

        // Do stuff with data here...
      end;
    end;
    AContext.Connection.CheckForGracefulDisconnect;
Run Code Online (Sandbox Code Playgroud)

它有时不会读取数据,因为CheckForDataOnSource(10)返回False.但是,如果我在该行停止调试器,我可以看到我在InputBuffer的字节中发送的数据.是否还有其他任何我应该做的设置或其他方法来强制它一直工作.这段代码运行很多次但总是在CheckForDataOnSource(10)上失败.

另外作为旁注,我注意到Indy的代码周围有些人抓住了AContext.Connection.IOHandler而不是AContext.Connection.Socket并做了与上面的代码相同的事情,什么是"正确"的使用.

谢谢

布鲁斯

delphi indy delphi-2009

2
推荐指数
1
解决办法
3978
查看次数

如何从具有IdTCPClient的服务器等待字符串?

我有一个IdTelnet(indy 10.1)的问题.我无法以Unicode模式从服务器读取数据.现在我想用IdTCPClient编写telnet终端.

服务器有时会发送一行,有时会发送越来越多的行.但发送之间没有固定的时间.

现在我的问题是,当我必须从InBuffer读取数据时.

或者当我必须使用ReadLn函数从服务器读取数据时,我必须运行ReadLn多少次?

sockets delphi indy tcpclient

2
推荐指数
1
解决办法
9870
查看次数

标签 统计

delphi ×2

indy ×2

delphi-2009 ×1

sockets ×1

tcpclient ×1