AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Server hängt manchmal ewig bei recv()
Thema durchsuchen
Ansicht
Themen-Optionen

Server hängt manchmal ewig bei recv()

Ein Thema von luke2 · begonnen am 29. Sep 2010
Antwort Antwort
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#1

Server hängt manchmal ewig bei recv()

  Alt 29. Sep 2010, 18:27
Hallo,

Ich habe eine Client-Server Anwendung, in der ganz einfach mit send() und recv() Daten ausgetauscht werden.
Wie ich hier schon gelesen habe, wartet recv() so lange, bis Daten zum Lesen vorhanden sind (Rückgabewert > 0) oder die Verbindung geschlossen wurde (Rückgabewert <= 0).
Das funktioniert auch fast immer, aber machmal bekommt das recv() beim Server nicht mit, wenn der Client einfach (unerwartet) geschlossen wird, also er wartet einfach ewig und die Anwendung muss neu gestartet bzw. die Verbindung muss neu aufgebaut werden. Woran kann das nur liegen?

So sieht der Code ungefähr aus (unwichtiges habe ich ausgelassen):
Delphi-Quellcode:
repeat
  iRecv := recv(Socket, iBufferLen, SizeOf(Integer), 0); //Länge des Pakets lesen
  if iRecv > 0 then
  begin
    RecvString := '';
    repeat
      iRecv := recv(Socket, RecvBuffer, SizeOf(Buffer), 0); //(Teil)Paket lesen
      if iRecv > 0
      begin
        SetLength(RecvBuffer, iRecv);
        RecvString := RecvString + RecvBuffer;
        if Length(RecvString) >= iBufferLen then
        begin
          //Paket komplett, weiter verarbeiten...
        end;
      end;
    until (iRecv <= 0) or ((Length(RecvString) >= iBufferLen));
  end;
until iRecv <= 0;
//bis hier kommt es manchmal nicht!?
Ich verstehe nicht, wieso recv() manchmal keinen Wert mehr zurückliefert und die Schleifen somit nicht verlassen werden.
Ich habe auch keine Möglichkeit den Status des Sockets immer wieder zu überprüfen, weil ich ja mit blockierenden Sockets arbeite.
Irgendwelche Ideen?

Danke
  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 20:56 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