如何只用TIdUDPServer实现数据的发送和接受,
假如目标IP/Port是192.168.3.251:4001(是一台设备,),
本地IP/Port是192.168.3.37:4002(当前电脑), 
怎样可以发送、接收命令都用TIdUDPServer完成,

解决方案 »

  1.   

    问题已解决,但是又有新问题出现,如下:
    //UDPServer : TIdUDPServer;
    var
      sBuf: AnsiString;
    begin
      sBuf := '40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23';
      UDPServer.SendBuffer(Trim(EdtDesIP.Text),StrToInt(EdtDesPort.Text),PChar(sBuf)^, Length(sBuf));
    我这样做,发送数据,结果不正确,为什么,我想把'40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23'以这种方式(16进制)发送给设备,
    不知道什么地方错了,希望大家给我指出来,
      

  2.   

    //UDPServer : TIdUDPServer;
    var
      sBuf: AnsiString;
      Buf: array [0..1023] of Char;
      iSize: Integer;
    begin
      sBuf := '40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23';
      sBuf := StringReplace(sBuf, ' ', '', [rfReplaceAll]);
      iSize := Length(sBuf) div 2;
      ZeroMemory(@Buf, SizeOf(Buf));
      HexToBin(PChar(@sBuf[1]), Buf, SizeOf(Buf));
      UDPServer.SendBuffer(Trim(EdtDesIP.Text),StrToInt(EdtDesPort.Text),Buf, iSize);