我使用Delphi6的Demo,修改了IdUDPClient中的IP地址后他发给我的我能收到,我发给他的却不能收到,不知道为什么啊
IP从QQ上获取:我的218.85.251.75:4001
他的:61.183.235.161:10928
是不是因为他的端口太奇怪了?******Client*******  object UDPAntiFreeze: TIdAntiFreeze
    OnlyWhenIdle = False
    Left = 268
    Top = 16
  end
  object UDPClient: TIdUDPClient
    Host = '218.6.48.133'
    Port = 8090
    ReceiveTimeout = 0
    Left = 240
    Top = 16
  end
{***************************************************************
 *
 * Project  : UDPClient
 * Unit Name: UDPClientMain
 * Purpose  : UDP demo - client project
 * Version  : 1.0
 * Date  : Wed 25 Apr 2001  -  01:44:24
 * Author  : <unknown>
 * History  :
 * Tested  : Wed 25 Apr 2001  // Allen O'Neill <[email protected]
 *
 ****************************************************************}unit UDPClientMain;interfaceuses
  {$IFDEF Linux}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls,
  {$ELSE}
  windows, messages, graphics, controls, forms, dialogs, Winsock, stdctrls,
  {$ENDIF}
  SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
  IdComponent, IdUDPBase, IdUDPClient, IdStack;type
  TUDPMainForm = class(TForm)
  SourceGroupBox: TGroupBox;
  HostNameLabel: TLabel;
  HostAddressLabel: TLabel;
  HostName: TLabel;
  HostAddress: TLabel;
  UDPAntiFreeze: TIdAntiFreeze;
  PortLabel: TLabel;
  Port: TLabel;
  DestinationLabel: TLabel;
  DestinationAddress: TLabel;
  BufferSizeLabel: TLabel;
  BufferSize: TLabel;
  UDPMemo: TMemo;
  SendButton: TButton;
  UDPClient: TIdUDPClient;
  procedure FormCreate(Sender: TObject);
  procedure SendButtonClick(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;var
  UDPMainForm: TUDPMainForm;implementationconst
  HOSTNAMELENGTH = 80;
  RECIEVETIMEOUT = 5000; // milliseconds{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
  Randomize; // remove if you want reproducible results.
  HostName.Caption := UDPClient.LocalName;
  HostAddress.Caption := GStack.LocalAddress;
  Port.Caption := IntToStr(UDPClient.Port);
  DestinationAddress.Caption := UDPClient.Host;
  BufferSize.Caption := IntToStr(UDPClient.BufferSize);
  UDPClient.ReceiveTimeout := RECIEVETIMEOUT;
end;procedure TUDPMainForm.SendButtonClick(Sender: TObject);
var
  MessageID: Integer;
  ThisMessage: String;
  ReceivedString: String;
begin
  MessageID := Random(MAXINT);
  ThisMessage := 'Message: ' + IntToStr(MessageID);
  UDPMemo.Lines.Add('Sending ' + ThisMessage);
  UDPClient.Send(ThisMessage);
  ReceivedString := UDPClient.ReceiveString();
  if ReceivedString = '' then
  UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')
  else
  UDPMemo.Lines.Add('Received: ' + ReceivedString)
end;end.  object UDPServer: TIdUDPServer
    Bindings = <>
    DefaultPort = 8090
    OnUDPRead = UDPServerUDPRead
    Left = 240
    Top = 16
  end
  object UDPAntiFreeze: TIdAntiFreeze
    OnlyWhenIdle = False
    Left = 268
    Top = 16
  end
******Server*******
{***************************************************************
 *
 * Project  : UDPServer
 * Unit Name: UDPServerMain
 * Purpose  : UDP demo - server project
 * Version  : 1.0
 * Date  : Wed 25 Apr 2001  -  01:43:04
 * Author  : <unknown>
 * History  :
 * Tested  : Wed 25 Apr 2001  // Allen O'Neill <[email protected]
 *
 ****************************************************************}unit UDPServerMain;interfaceuses
  {$IFDEF Linux}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls,
  {$ELSE}
  windows, messages, graphics, controls, forms, dialogs, IdWinsock, stdctrls,
  {$ENDIF}
  SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
  IdComponent, IdUDPBase, IdUDPClient, IdStack, IdUDPServer, IdSocketHandle;
type
  TUDPMainForm = class(TForm)
  SourceGroupBox: TGroupBox;
  HostNameLabel: TLabel;
  HostAddressLabel: TLabel;
  HostName: TLabel;
  HostAddress: TLabel;
  UDPServer: TIdUDPServer;
  UDPAntiFreeze: TIdAntiFreeze;
  PortLabel: TLabel;
  Port: TLabel;
  BufferSizeLabel: TLabel;
  BufferSize: TLabel;
  UDPMemo: TMemo;
  procedure FormCreate(Sender: TObject);
  procedure UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
  private
  { Private declarations }
  public
  { Public declarations }
  end;var
  UDPMainForm: TUDPMainForm;implementationconst
  HOSTNAMELENGTH = 80;{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
  HostName.Caption := UDPServer.LocalName;
  HostAddress.Caption := GStack.LocalAddress;
  Port.Caption := IntToStr(UDPServer.DefaultPort);
  BufferSize.Caption := IntToStr(UDPServer.BufferSize);
  UDPServer.Active := True;
end;procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  s: String;
begin
  DataStringStream := TStringStream.Create('');
  try
  DataStringStream.CopyFrom(AData, AData.Size);
  UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
  s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"';
  ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
  finally
  DataStringStream.Free;
  end;
end;
end.