AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP IP Proxy für eigenes Protokoll mit Veränderung.
Thema durchsuchen
Ansicht
Themen-Optionen

TCP IP Proxy für eigenes Protokoll mit Veränderung.

Ein Thema von cyborg · begonnen am 19. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#1

TCP IP Proxy für eigenes Protokoll mit Veränderung.

  Alt 19. Aug 2003, 12:36
Hi.

Ich habe schon seit längerem ein Projekt in Versuch. Eigentlich versuche ich es seit einer seeehr langen Zeit.

MEin Programm soll die Verbindung zwischen zwei clients herstellen. Es ist also ein Proxy sozusagen.
er horcht auf einem port und sobald eine verbindung passiert connectet er zu einem anderen client.

das protokoll welches er versteht ist festgelegt:
ein byte = kommandotyp
zwei byte = grösse des paketes
restliche bytes = information.

er soll einmal soweit sein, dass er information von einem zum anderen und vice versa verschickt. ABER jetzt kommts.
er soll auch imstande sein, kommandos abzufangen. manche bytekommandos nämlich sollen nur für ihn gedacht sein und je nach "Einstellung" soll er dann ein anderes kommando weiterschicken - wenn überhaupt.

ich habe schon sehr viel versucht. aber das problem ist, alle tutorials zeigen proxys, die einfach nur den buffer weitersenden. wenn ich eienn buffer bearbeiten will - noch dazu wo mir das protokoll ja bekannt ist - dann hab ich da schwierigkeiten - ständig exceptions etc.
ich blick überhaupt nicht mehr durch und gebe langsam auf.

ich denke, dieses programm ist nicht allzu kompliziert, für jemanden, der sich wirklich gut auskennt. ich bin schon total perplex.
vielleicht könntet ihr mir posten, ob ihr ähnliche beispiele kennt, ob ihr lösungsansätze habt oder tutorials zu soetwas wisst.

wenn jemand sich frei fühlt und das prog schnell schreibt, habe ich auch nix dagegen. =)

also, bitte helft mir *fleh*
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: TCP IP Proxy für eigenes Protokoll mit Veränderung.

  Alt 19. Aug 2003, 12:43
Poste uns doch mal die relevanten Teile des Proxies. Annhame der Daten, check, Weiterleitung an den zweiten Rechner. Und welche Komponenten Du verwendet hast wäre auch interessant

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#3

Re: TCP IP Proxy für eigenes Protokoll mit Veränderung.

  Alt 19. Aug 2003, 12:59
ich habe TClientSocket und TServerSocket verwendet, da immer ein client zum anderen connectet und nicht umgekehrt (das reicht mir vorerst)

ich habe mehrere ansätze, aber alle gehen etwa so dass bei einem
Delphi-Quellcode:
procedure TFormConnecticut.ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
ein ReceiveText und ein SendText weiter geht.

Ich zeig mal eine solche funktion, die wirklich schon ein verzweiflugnsversuch ist, also nicht schimpfen =)

Delphi-Quellcode:
s:=Socket.ReceiveText; // s=string

// das hier ist lösung nummer xy
SetLength(p, 0); // p ist ein stringarray - ich habe am ende versucht in einer eigenen prozedur einer unit das protokoll aus dem string zu entschlüsseln

RestServer:=ProtocolResolve(s, RestServer, p);
// erklärung: RestServer behaltet sich den jeweiligen überrest, des protokolls
// ProtocolResolve empfängt den Buffer (s) den Rest vom letzten mal (RS) und p als Variable, in der er dann die einzelnen Strings abspeichern soll... (jeweils Protokollbefehle mit s[1] = kommando, s[2-3] = paketlänge etc.)

// x und o = integer
if Server.Socket.ActiveConnections>0 then
for o:=0 to Server.Socket.ActiveConnections-1 do
 begin
 For x:=0 to High(p) do begin
 s:=p[x];
 Server.Socket.Connections[o].SendText(s);
 b:=ORd(s[1]); // kommandobyte
 log.Lines.Add(ProtocolResolveStr(b))
 // protocolresolvestr schreibt den index des kommandos in ein memo, debug
 end;
end;
wie gesagt, womöglich denke ich etwas falsch denn es kann sein, dass der aufruf der prozedur alles durcheinander bringt.
allerdings habe ich die erfahrung gemacht, dass manchmal nicht der ganze befehl ankommt, deswegen der versuch mit RestServer. eigentlich sollte RestServer die meiste Zeit = '' sein.

Es kann sein, dass mein Lösungsansatz vollkommen daneben ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz