一个IdUDPServer绑定两个端口6200 和6300
一个IdUDPClient给6200发信息后,Server能收到,如果想指定server的一个端口来回复,用了这个IdUDPServer.bindings.item[0].send();不知道可以否。
如果可以,那么在Client接收的时候,能否判断时那个端口发出来的6300还是6200,那个方法或者函数可以判断出来,一直搞不明白。

解决方案 »

  1.   

    〉〉一个IdUDPServer绑定两个端口6200 和6300这样可以吗?怎么实现的,学习一下
      

  2.   

    IdUDPServer.bindings.add;
    IdUDPServer.bindings.items[0].IP:='192.168.1.6';
    IdUDPServer.bindings.items[0].Port:='6200';
    IdUDPServer.bindings.add;
    IdUDPServer.bindings.items[1].IP:='192.168.1.6';
    IdUDPServer.bindings.items[1].Port:='6300';
    这样就可以啊
      

  3.   

    我是这样的:
    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
    ABinding: TIdSocketHandle);
    var
      iLoop : Integer;
      iSize : Integer;
      bBuffer : array of Byte;
      sBuffer : String;
      str1 :PChar;
    begin
      iSize := AData.Size;
      SetLength (bBuffer, iSize);
      AData.ReadBuffer(bBuffer[0], iSize);
      sBuffer := ABinding.PeerIP + ' : ';
      for iLoop := 0 to iSize - 1 do
      begin
        sBuffer := sBuffer + chr(bBuffer[iLoop]);
      end;
      Memo1.Lines.Add(sBuffer);  str1 := PChar(Memo2.Text);//'OK,GXT UDP ' + DatetimeToStr(Now);
      ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,str1[1],Length(str1));
      //IdUDPClient1.Send('OK!');
      //ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,Memo2.Text[1],Length(str1));end;