AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket und Client senden Daten falsch weiter
Thema durchsuchen
Ansicht
Themen-Optionen

TServerSocket und Client senden Daten falsch weiter

Offene Frage von "vlees91"
Ein Thema von vlees91 · begonnen am 20. Sep 2006 · letzter Beitrag vom 3. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#1

TServerSocket und Client senden Daten falsch weiter

  Alt 20. Sep 2006, 15:44
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ReceiveServer(Sender: TObject; Socket: TCustomWinSocket);
    procedure ReceiveClient(Sender: TObject; Socket: TCustomWinSocket);
    procedure Connect(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
    myServer: TServerSocket;
    myClient: TClientSocket;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
  myClient.Active := true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  Memo2.Clear;

  myServer := TServerSocket.Create(Self);
  myServer.Port := xxxx;
  myServer.Active := true;
  myServer.OnClientRead := ReceiveServer;
  myServer.OnClientConnect := Connect;

  myClient := TClientSocket.Create(Self);
  myClient.Port := xxxx;
  myClient.Host := xxxx;
  myClient.OnRead := ReceiveClient;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  myServer.Free;
  myClient.Free;
end;

procedure TForm1.ReceiveClient(Sender: TObject; Socket: TCustomWinSocket);
var
  s: String;
begin
  s := Socket.ReceiveText;
  Memo2.Lines.Add(s);
  myServer.Socket.Connections[0].SendText(s);
end;

procedure TForm1.ReceiveServer(Sender: TObject; Socket: TCustomWinSocket);
var
  s: String;
begin
  s := Socket.ReceiveText;
  Memo1.Lines.Add(s);
  myClient.Socket.SendText(s);
end;

end.
ja, das ist mein code

Und ich habe gedacht, dass so alles, was ein Client schickt, bei mir in ein Memo gesetzt wird und gleichzeitig an den Server geschickt wird (und andersherum)

allerdings ist dies nicht der Fall: nach 4mal Daten empfangen und senden kommt nichts mehr an, obwohl der Client auf die Antwort des Servers weiter senden sollte.
Ich habe den Code des Clients nicht, weiß also nicht wieso es da stockt.
Wenn ich jetzt in Wireshark schaue (mit meinen eigenen Proxy), kommt nach diesen Paar Paketen zweimal der "Reset Flag". Der kommt ohne Proxy nicht.
Was ist dieser Flag, und wieso wird er verschickt (ich vermute mal, dass mein Programm den verschickt)?
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 21. Sep 2006, 07:29
*push*
vlees91
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 21. Sep 2006, 11:36
Dein Programm verschickt solche Flags im allgemeinen nicht, da du hier eine High Level API ansprichst und nicht auf der packet-orientierten Stufe der Datenübertragung. Ich vermute eher ein grundlegendes Problem des disconnects: gib dir doch mal eine Meldung aus, wenn der Socket des Clients oder des Servers geschlossen wird. Auch verstehe ich den Sinn des Codes nicht ganz, da du hier eine Endlosschleife produzierst, da du immer im Kreis schickst. Dadurch wird das eine Endlosschleife.
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 21. Sep 2006, 13:11
nein, mein client verbindet nicht zu meinem server, also kein e endlosschleife, sondern dient nur als proxy.
ich werde mir gleich mal anzeigen lassen wann disconnected wird, aber das bringt mir doch nichts, oder?
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 22. Sep 2006, 15:33
*push*
vlees91
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#6

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 29. Sep 2006, 11:09
Hallo Jasper,

als Proxy wird dein Programm im Allgemeinen so nicht funktionieren.

Der Serverteil des proxy empfängt von allen möglichen connections Daten parallel und sie werden über einen einzigen clientteil des proxy zum remote server geschickt. Der remote server schickt nun einige Antworten und die werden alle über die connection[0] zurückgesendet, auch wenn die Anfragen ursprünglich von anderen connections stammen. Dabei können sich Anfragen und Antworten überschneiden. Kein Wunder dass in diesem Chaos irgendwer RESET schreit.

Ein Proxy muss für jede Connection vom Client zum Serverteil des proxy ein socket öffnen und die anfrage zum remote server senden. Beim Eintreffen der Antworten, müssen diese zur dazugehörenden connection vom Serverteil des proxy weiter gereicht werden, damit sie den Client auf der Verbindung erreichen, wo die Anfrage gesendet wurde.

grüsse,
der flossinger
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 1. Okt 2006, 19:47
nein, es gibt einfach nur einen client...
es soll ja nur ein proxy für EIN programm sein, und es werden nur lokale verbindungen zugelassen, und ICH werde nicht öfters dahin verbinden.
vlees91
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#8

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 2. Okt 2006, 04:18
OK,

aber was ist das für ein Client. Viele Clients wie zum Beispiel Webbrowser, aber auch andere stellen mehrere Verbindungen gleichzeitig zum Server her. Das muss ein Proxy handhaben können.

grüsse,
der flossinger
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 2. Okt 2006, 16:03
Es ist eine Art Spiel, dass über TCP jede Menge sachen an den server sendet
vlees91
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#10

Re: TServerSocket und Client senden Daten falsch weiter

  Alt 2. Okt 2006, 17:37
Jetzt komm doch endlich zum wesentlichen: wieviele ports benützt dieser Spielclient, um zu kommunizieren?

verwundert,
der flossinger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:46 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