刚学习用INDY,昨天根据网上的资料写了个TCPServer和TCPClient,测试结果可以相互收发数据,我现在用我的Server跟GPRS通讯,TCPServer发的数据GPRS端可以收到,但是GPRS发的数据TCPServer却收不到,请教下,这个问题最大的可能是哪里没写好?谢谢!

解决方案 »

  1.   

    TCPServer的接收部分代码如何写的呀
      

  2.   

    procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
    var
      sCommand: String;
    begin
      with AThread.Connection do
      begin
        ShowMessage('Ok');
        sCommand := ReadLn();
        FLogEntry := sCommand + '来自主机'
          + AThread.Connection.Socket.Binding.PeerIP;
        AThread.Synchronize(AddLogEntry);    if AnsiStartsText('DATA', sCommand) then
        begin
          FReceived := RightStr(sCommand, Length(sCommand)-5);
          WriteLn('200:数据接收成功!');
          AThread.Synchronize(DisplayData);
        end
        else if SameText(sCommand, 'QUIT') then begin
          FLogEntry := '断开同主机'
            + AThread.Connection.Socket.Binding.PeerIP
            + '的连接!';
          AThread.Synchronize(AddLogEntry);
          Disconnect;
        end
        else begin
          WriteLn('500:无法识别的命令!');
          FLogEntry := '无法识别命令: ' + sCommand;      AThread.Synchronize(AddLogEntry);
        end;
      end;end;
      

  3.   

    我在想,是不是因为我的GPRS是通过移动网->路由->PC,但是为什么GPRS能收到呢?
      

  4.   

    郁闷死,为什么我在GPRS端用AT+TCPClOSE=0;TCPServer能感应到GPRS的关闭,为什么GPRS发数据TCPServer好像连IdTCPServerExecute都没执行????????????
      

  5.   

    哈哈,问题解决了,只要把sCommand改成sCommand := CurrentReadBuffer;就OK了