Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 23:01

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 09:07 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ne, das tritt im gesamten Netzwerk auf.. vorallem auch da wo Client und Server auf dem selben rechner sind (und über 127.0.0.1 reden) :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 16:35 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Bist Du dir sicher, das die Verbindung immer aufgerecht gehalten wird oder das der Server die Verbindung trennt und Du versuchst noch Daten zu lesen oder zusenden?

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 17:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
die Verbindung wird jedesmal wieder neu aufgebaut und getrennt... und, das der Client was lesen will, was garnich da is glaub ich eigentlich auch weniger.. denn dann kommt doch dieses "Connection Closed Gracefully", oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 17:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
die Verbindung wird jedesmal wieder neu aufgebaut und getrennt... und, das der Client was lesen will, was garnich da is glaub ich eigentlich auch weniger.. denn dann kommt doch dieses "Connection Closed Gracefully", oder?

Das andauernde Öffnen und Schliessen einer Verbindung für jedes Datensenden halte ich für eine sehr sehr schlechte Idee, und das werden dir auch andere Personen bestätigen...deshalb würde ich dir empfehlen die Verbindung nur einmal aufzubauen, und dann erst beim Schliessen des Servers (Sprich Programmende) wieder zu trennen.Damit vermeidest du viele Probleme, und unter Umständen kann es auch mal sein das dass Öffnen einer Verbindung etwas länger dauerd, und dann gibts ja beim Senden der Daten Probleme.

Du wirst übrigens kaum ein Programm/Spiel finden, das Netzwerkverbindungen so handhabt wie du, und das wird wohl auch seinen Grund haben.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 11, 2003 07:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Wenn du mir dann noch sagst, wie ich mein Indy TCP/IP Clienten mitbekomme ob der server was schickt, lasse ich die Verbindung auch permanent offen.... ;)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 16, 2003 16:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Aya hat geschrieben:
Wenn du mir dann noch sagst, wie ich mein Indy TCP/IP Clienten mitbekomme ob der server was schickt, lasse ich die Verbindung auch permanent offen.... ;)

Sagst du's mir nich, oder weißt du's nich??? :unsure:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 16, 2003 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
Aya hat geschrieben:
Wenn du mir dann noch sagst, wie ich mein Indy TCP/IP Clienten mitbekomme ob der server was schickt, lasse ich die Verbindung auch permanent offen.... ;)

Sagst du's mir nich, oder weißt du's nich??? :unsure:

Sry, aber ich muss dich enttäuschen : Ich weiss es ehrlich gesagt nicht!

Ich arbeite nämlich leider nicht mit den Indykomponenten, sondern nutze die Delphiklassen TServerSocket und TClientSocket...ich war deshalb der Meinung das hier jemand der Indy in der Praxis einsetzt dir darauf antworten kann.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2003 18:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
*seufzt* So langsam hasse ich diese Indy Komponenten... -_-

Der Client hat absolut keine möglichkeit (so wie ich das sehe) mitzubekommen, ob der Server was geschickt hat.. :(

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2003 18:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das war auch der Grund, warum ich für die Netzwerkunterstützung in NapalmBomber3D die oben genannten Delphiklassen genutzt hab.Beim Indy TCPClient hab ich nämlich, genauso wie du, auf die Schnelle keine Möglichkeit gefunden, herauszufinden wenn der Server Daten an den Client schickt.

Der TClientSocket hat allerdings ein praktisches Ereignis (OnRead), mit dessen Hilfe sich das sehr sehr einfach realisieren lässt...wenn man nix all zu Komplexes will, dann sollten diese Klassen deshalb auch ausreichen, zumal man hier auch Threads nutzen kann.

P.S. : Gibts hier nicht noch andere Personen die die Indy-Komponenten nutzen und weiterhelfen könnten :unsure:

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2003 20:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Son of Satan hat geschrieben:
Der TClientSocket hat allerdings ein praktisches Ereignis (OnRead), mit dessen Hilfe sich das sehr sehr einfach realisieren lässt...wenn man nix all zu Komplexes will, dann sollten diese Klassen deshalb auch ausreichen, zumal man hier auch Threads nutzen kann.

Die hatte ich anfangs für dieses Projekt hier auch verwendet, nur bei den Datenmengen die ich hier dauernd hin und herschiebe waren die nicht ausreichend...

Es war da z.B. immermal so das dinge verloren gingen etc... :(

Au'revoir,
Aya~

PS: Das dollste is ja, ich hab alles mit ReadLn und ReadInteger etc aufgebaut... das war der größte fehler den ich machen konnte.. ich bin jetzt, wo das Projekt ca~ 120.000 Zeilen hat daran alles in Streams zu packen, denn beim ReadLn gab es laufend fehler... -_-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2003 08:44 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
In einem Datenbankreplikationsservice setze ich die Indy - Komponenten bisher ohne Probleme ein. Dieser Service hält ständig die Verbindung offen, wenn ein Client sich am Service anmeldet. Der Client beendet immer die Verbindung, niemals der Server, außer der Service wird beendet, z. B. durch einen Shutdown. Der Service wartet auf einen Befehl und sendet Antworten an den Client.

Dabei gehe ich wie folgt vor:

Zitat:
function WaitForNextAnswer(var Cmd : String) : Boolean;
var
  Data : String;
begin
  Result := False;
  Data := Server.ReadLn(EOL, MaxTimeout);
  if (Data <> '') then begin
    Cmd := Data;
    Result := True;
  end;
end;

procedure Execute;
var
  Cmd : String;
begin
  Send('Hallo');
  while (not Stopped) do begin
    if not WaitForNextAnswer(Cmd) then begin
      Continue;
    end;
    // Cmd weiter bearbeiten
  end;

  if Client.Connected then begin
    Server.Disconnect;
  end;
end;


Diese Lösung kommt in mehreren Firmen zum Einsatz und läuft seit ca. 2 Jahren zufrienden stellend. Der Client arbeitet dabei nicht Thread orientiert, der Server erstellt für jeden Client einen eigenen Thread.

Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]