0
在下面的代碼我有一些相關的問題TidUDPClient通代理服務器
var
UseProxy : Boolean = True;
....
var
IdUDPClient : TIdUDPClient;
sText : string;
begin
IdUDPClient := TIdUDPClient.Create(nil);
try
IdUDPClient.Host := '10.10.10.10';
IdUDPClient.Port := 5555;
if UseProxy then begin
IdUDPClient.TransparentProxy.Enabled := True;
IdUDPClient.TransparentProxy.Host := '20.20.20.20';
IdUDPClient.TransparentProxy.Port := 8080;
IdUDPClient.OpenProxy;
end;
try
IdUDPClient.Connect;
except
Writeln('Connect Error.');
end;
if IdUDPClient.Connected then
Writeln('Connected')
else begin
Writeln('Not Connected');
Exit;
end;
try
IdUDPClient.Send('Foo');
try
sText := IdUDPClient.ReceiveString(1000);
Writeln('Received: ', sText);
except
Writeln('Receive Error.');
end;
except
Writeln('Send Error.');
end;
if UseProxy then
IdUDPClient.CloseProxy;
finally
IdUDPClient.Free;
end;
Readln;
end.
- 爲什麼
try...except
塊未捕獲的錯誤UDP
客戶端上即使主機不可達也不端口例如關閉IdUDPClient.Connected
總是True
? - 當使用代理我不知道如果我的實現是上面 正確的,因爲如果
UseProxy
是真正的IdUDPClient嘗試直接發送 請求10.10.10.10
沒有直通的代理服務器。我如何解決這個問題?我做錯了什麼?
我的代理測試場景爲如下:
- 我的電腦IP
30.30.30.30
- UDP服務器
10.10.10.10
- 代理Sever的(襪子5)
20.20.20.20
30.30.30.0/24
着達到10.10.10.10
但20.20.20.20
呢。
- 如果我的電腦可以直接訪問UDP服務器,並且將假代理服務器(帶有隨機端口的未使用IP)發送到客戶端。客戶端可以訪問由於代理關閉而不應該到達的UDP服務器。我不能防止這種情況?