在Delphi中通过代理进行UDP连接

时间:2009-10-10 23:00:04

标签: delphi proxy indy

我有一个连接到udp服务器的应用程序,当我在代理服务器后面时,我似乎无法理解它。

这是我的代码,当代理后面的时,它正常工作。

function TfrmMain.SendCommand(ServerName, IP: String; Port: Integer; Command: String): String;
var
  Udp : TIdUDPClient;
  Count : Integer;
  Response: String;
begin
  Result := '';
  Udp := TIdUDPClient.Create(nil);
  try
    try
      Udp.Host := IP;
      Udp.Port := Port;
      if UseProxy then begin
        Udp.TransparentProxy.Enabled := True;
        Udp.TransparentProxy.Host := ProxyServer;
        Udp.TransparentProxy.Port := ProxyPort;
        Udp.OpenProxy;
      end else begin
        Udp.TransparentProxy.Enabled := False;
      end;
      Udp.Connect;
      if Udp.Connected then begin
        //Send Command and receive data...
      end;
      if UseProxy then begin
        Udp.CloseProxy;
      end;
      Udp.Disconnect;
    except
      MessageBox(Handle, PChar('There was an error connecting to server ' + QuotedStr(ServerName) + '.  '), 'Error', MB_ICONERROR);
    end;
  finally
    Udp.Free;
  end;
end;

我不知道我做错了什么,我没有使用代理很多,并且它在工作中它不起作用,它不是一个工作项目,所以我无法调试它那里。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您知道TransparentProxy必须是SOCKS5 proxy吗?您正在测试什么样的代理?