AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket <-> TClientSocket | Daten Weiterleitung

TServerSocket <-> TClientSocket | Daten Weiterleitung

Ein Thema von Darkface · begonnen am 28. Nov 2009 · letzter Beitrag vom 29. Nov 2009
Antwort Antwort
Darkface

Registriert seit: 18. Apr 2008
89 Beiträge
 
Delphi XE Professional
 
#1

TServerSocket <-> TClientSocket | Daten Weiterleitung

  Alt 28. Nov 2009, 19:37
Hallo Dp'ler,

Ich mache mir gerade über eine Weiterleitung von Daten vom ServerSocket zum ClientSocket Gedanken. Hintergrund ist folgender:

Der Server läuft (Beispielsweise) auf Port 80. Im selben Programm läuft auch ein ClientSocket (allerdings [beispielsweise] auf Port 81).

Irgendetwas sendet Daten unbekannter Art an den Server an Port 80. Dieser leitet die Daten intern an den Client weiter welcher die Daten dann über Port 81 wieder versendet.

Kommen Daten zurück (Port 81) soll der Client sie nach dem selben Prinzip wieder an den Server leiten und der Server sie zurück an das unbekannte geben.

Das ganze soll also eine Weiterleitung werden von Port X auf Y und wieder zurück.

Die Frage ist nun, kann das funktionieren wenn ich nicht weis welcher Art die Daten sind?

ServerSocket1.Socket.Reciveln kann ja nur Strings händeln, wenn dann Steuerzeichen, Dateien ect. kommen funktioniert das ja theoretisch nicht oder? Wenn ich dann ReciveBuf nehme weis ich doch nicht wie lang das Empfangene sein wird (?).

Bei der Weiterleitung zwischen Server und Client dachte ich an einen MemoryStream. Ich würde alles Empfangene rein schreiben und vom anderen Socket auslesen und versenden.

Hat da jemand einen Tipp für mich?

MfG
Darkface

[Edit] Verschrieben...
Alexander
Ich halte Ordnung.
Zum Beispiel mein Schreibtisch: Hier ist alles zeitlich geordnet - was zuletzt kam, liegt oben. (Frank Erhoff)
  Mit Zitat antworten Zitat
ub60

Registriert seit: 14. Nov 2004
17 Beiträge
 
#2

Re: TServerSocket <-> TClientSocket | Daten Weiterleit

  Alt 29. Nov 2009, 15:02
Die Sache mit dem Memorystream oder auch mit langen Strings funktioniert so nicht, da mit den Socket-Kompos nur Daten einer bestimmten Länge übertragen werden können (ich glaube, so um die 8k je Sendung, weiß aber die Zahl jetzt nicht genau).
Ausweg bietet hier ein Aufteilen der Daten in Pakete und ein eigenes Protokoll.
Narses hatte dazu mal ein Super-Tutorial geschrieben (das beste Tut, das ich je gesehen habe ).
Kleiner Wermutstropfen, es war seeeeeeeeeeeeeeeehr lang.
Zumindest findest Du dort die Ideen für ein ev. eigenes Protokoll.

ub60
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TServerSocket <-> TClientSocket | Daten Weiterleit

  Alt 29. Nov 2009, 17:05
Hier muss man sich überhaupt nicht um ein Protokoll kümmern. Einfach Empfangen und Weiterleiten. Und irgendwie bekommt man auch bei ReceiveBuf raus, wie lang der Inhalt ist. (Dazu müsste ich jetzt Delphi anwerfen um nachzusehen)
Wie die Pakete gestückelt werden ist egal und die 8k GRenze besteht nur in der WinSock-Implemetierung von Windows. Die kann man aber verändern. Es handelt sich auch nur um die Größe wie groß der Puffer in so einem Socket ist. Windows teilt den dann soweiso in die entsprechenden Pakete auf.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TServerSocket <-> TClientSocket | Daten Weiterleit

  Alt 29. Nov 2009, 18:21
Hallo, ich habe in einer meiner Programme diese Zeile gefunden:
Socket.ReceiveBuf(Uebertragung, Socket.ReceiveLength); Uebertragung ist dabei ein Record, mit bestimmten Variablen, die ich brauchte. Aber für dich müsste "Socket.ReceiveLength" interessant sein.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf