Hey,
ich mach da doch besser mal nen neuen Thread auf. Und zwar erzeuge ein ClientSocket und lasse es in einem Thread versuchen zu verschiedenen Adressen eine Verbindung herzustellen:
Delphi-Quellcode:
constructor TTCPThread.Create;
begin
inherited;
Cnt := 0;
Authenticated := false;
TCPClient := ScktComp.TClientSocket.Create(nil);
TCPClient.ClientType := ctBlocking;
//TCPClient.ReadTimeout := 5000;
TCPClient.OnConnect := OnConnect;
TCPClient.OnDisconnect := OnDisconnect;
TCPClient.OnRead := OnRead;
TCPClient.OnError := OnError;
end;
destructor TTCPThread.Destroy;
begin
TCPClient.Free;
SetLength(ListArray, 0);
inherited;
end;
procedure TTCPThread.Execute;
begin
repeat
if not TCPClient.Socket.Connected then
begin
TCPClient.Host := ListArray[Cnt].Host;
TCPClient.Port := ListArray[Cnt].Port;
try
TCPClient.Active := true;
except
end;
if Cnt = High(ListArray) then
begin
Cnt := -1;
end;
Cnt := Cnt + 1;
end;
Sleep(DataRecord.IntervalSIN);
until Terminated;
end;
procedure TTCPThread.OnConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
SendAuthHandshake(Socket); // Autentifizierung beginnen
end;
procedure TTCPThread.OnDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
//
end;
procedure TTCPThread.OnError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
OnDisconnect(Sender, Socket);
end;
procedure TTCPThread.OnRead(Sender: TObject; Socket: TCustomWinSocket);
begin
MessageBox(0, 'test', 'test', 0);
end;
Der AuthHandshake, den ich über SendBuffer und SendStream an den Server schicke kommt wunderbar an. Beim Server sende ich mit den gleichen Funktionen Daten zurück. Diese werden, wie ich mit einem Sniffer geprüft habe, auch wirklich gesendet, gelangen aber irgendwie nie zum Client. Das OnRead Ereigniss wird zumindest nie aufgerufen ..
Hat da jemand eine Idee ..?
Gruß Florian