Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit recv() Socket speichern auslesen

Empfohlene Antworten

Veröffentlicht

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

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.