Zum Inhalt springen

Probleme mit recv() Socket speichern auslesen


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein Problem mit der recv() Methode welche ja die von einem Server gesendeten daten welche im Speicher liegen auslesen soll.

Jedesmal wenn ich die Methode innnerhalb einer Schleife aufrufe um den Speicher auszulesen so bleibt der letzte Aufruf "hängen" welcher mir eigentlich als returnwert eine 0 für keine Zeichen liefern müßte.

Das Progi fährt, wenn überhaupt, nach sage und schreibe bis zu 5 Minuten mit der arbeit erst wieder fort.

Bisher habe ich von meinem Webserver ausgelesen und das Problem umgangen indem ich die letzten gelieferten Zeichen kannte z.B. </html> und die Schleife bei Erkennung dieser Zeichen abgebrochen habe. Allerdings möchte ich hier korrekt arbeiten und bei 0 beenden.

Mein Aufruf etwas vereinfacht:

char buffer[256];

do

{

size = recv(sock,buffer,256,0);

...

} while(size>0)

Wo liegt der Fehler ?

Joerg

Geschrieben
Wo liegt der Fehler ?
Kein Fehler. recv wartet, wenn keine Daten vorliegen. Mit 0 kommt es nur zurück, wenn die Gegenstelle die Verbindung schließt.

Es gibt auch nicht-blockierende Sockets, wie du die verwendest, hängt aber davon ab, welches Betriebssystem du benutzt.

Geschrieben

Entwicklungsumgebung :VC++ 6.0

Betriebsystem: W2K

jetzt wo Du Du es sagts. Davon habe ich auch schon gelesen, blokierend nicht blokierend. Wußte aber nicht das die recv() blokiert. Kannst Du da etwas weiter ausholen und mir die Hauptunterschiede zwischen den beiden erklären. Irendwelche Fallstricke wenn ich versuche mit nicht blokierten Socket zu arbeiten ?

Gruß Joerg

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...