Einzelnen Beitrag anzeigen

CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#1

Unit in Klasse übertragen -> Access Violation

  Alt 6. Jun 2010, 23:04
Delphi-Version: 2005
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
Angehängte Dateien
Dateityp: pas Socks5Proxy.pas (13,7 KB, 3x aufgerufen)
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat