Hallo Leute,
Ich stieß in einem russischen Forum auf eine
Unit, die einen SOCKS5-Server erstellen soll.
Diese
Unit funktioniert auch gut. (soweit ich das testen konnte)
Originalunit:
http://nopaste.info/1b154eaa8c.html
Für meine Zwecke ist diese Methode aber eher ungeeignet, glücklicherweise fand ich auf der selben Seite eine Umarbeitung der
Unit zur Klasse. (Siehe Anhang)
Unglücklicherweise schmeißt diese mir beim Aufruf von FOnClientConnected eine
AV aus.
Kommentiere ich FOnClientConnected aus, kommt zwar keine
AV und wird der Socket auch erstellt, die anderen Events werden jedoch nie aufgerufen und der Server reagiert nicht auf SOCKS-Anfragen.
Ich bin leider alles andere als ein Experte in
OOP und würde hier nun gerne nachfragen, was mein Fehler sein könnte.
Mein Beispielcode sieht so aus:
Delphi-Quellcode:
type TProxyMethodDispatcher = class(TObject)
public
procedure ClientConnected(client:TSocket);
procedure ClientDataAvailable(client:TSocket; data:pchar; len:integer);
procedure ClientDisconnected();
end;
procedure TProxyMethodDispatcher.ClientConnected(client:TSocket);
begin
MessageBoxA(0,pchar('PROXY Connected'),'ff',0);
end;
procedure TProxyMethodDispatcher.ClientDataAvailable(client:TSocket; data:pchar; len:integer);
begin
MessageBoxA(0,pchar('PROXY ' + string(data)),'ff',0);
end;
procedure TProxyMethodDispatcher.ClientDisconnected();
begin
MessageBoxA(0,pchar('PROXY DisConnected'),'ff',0);
end;
var
vproxysock : TSocks5Proxy;
vproxymethoddispatcher : TProxyMethodDispatcher;
begin
vproxysock := TSocks5Proxy.Create(nil);
vproxysock.OnClientConnected := vProxyMethodDispatcher.ClientConnected;
vproxysock.OnClientDisConnected := vProxyMethodDispatcher.ClientDisConnected;
vproxysock.OnClientDataAvailable := vProxyMethodDispatcher.ClientDataAvailable;
//SOCKS5 SOCKET
vproxysock.Port := 8080;
vproxysock.UseAuth := False;
vproxysock.ManualResponse := True;
vproxysock.Open;
end;
Danke im Voraus
Das Leben ist wie ein Strand...und dann stirbt man.