Witam.
Na wstepie zaznacze, ze uzylem "Szukaj" na rozne sposoby i nie znalazlem odpowiedzi na moj problem.
Moj problem jest taki; mam aplikacje klienta (jest to gra internetowa Tibia) oraz serwer. Normalnie klient Tibii laczy sie docelowo do serwera; ale ja chcialbym aby laczyla sie przez dodatkowa aplikacje.
Zrobilem tak - wstawilem na forme 2 komponenty: ClientSocket i ServerSocket.
ClientSocket laczy sie z serwerem Tibijskim
ServerSocket laczy sie z klientem Tibii na innym porcie (7777)
Klient ma adres mojego proxy-programiku i laczy sie do niego.
Generuje zdarzenia onRead - aby wysylalo to drugim socketem...
ClientSocket->onRead wysyła przez ServerSocket
ServerSocket->onClientRead wysyla przez ClientSocket
Dodatkowo w kazdej funkcji znajduje sie kod ktory dodaje zesniffowane pakiety do list boxow.
Problem jest taki ze tylko pierwszy pakiet rzeczywiscie "leci" przez proxy; potem klient i serwer znow porozumiewaja sie normalne Oo!
Co wiecej, jak zaloguje sie do gry i wylacze proxy to moge grac dalej :| a jak wyloguje sie i bede probowal sie jeszcze raz polaczyc to wyskoczy "Cannot find host" (bo proxy jest wylaczone). O co tu chodzi?:|
Oto procedury:
[delphi]
procedure TForm1.TibiaClientClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Lng: Integer;
Buffer: array[0..1024] of char;
begin
Lng := Socket.ReceiveLength;
Socket.ReceiveBuf(Buffer, Lng);
for i:=0 to Lng do
begin
ListBox1.Items.Add(IntToStr(Ord(Buffer[i])));
end;
TibiaServer.Socket.SendBuf(Buffer,Lng);
end;
procedure TForm1.TibiaServerRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Lng: Integer;
Buffer: array[0..1024] of Char;
begin
Lng := Socket.ReceiveLength;
Socket.ReceiveBuf(Buffer,Lng);
for i:=0 to Lng do
begin
ListBox2.Items.Add(IntToStr(Ord(Buffer[i])));
end;
TibiaClient.Socket.Connections[TibiaClient.Socket.ActiveConnections-1].SendBuf(Buffer, Lng);
end;
[/delphi]
Proste, a nie działa :S Jak już mówiłem - tylko jeden pakiet przelatuje przez proxy, reszta łączy się jakby docelowo. This is strange :|
Prosze o szybka pomoc ;/