UDP und sockets, recvfrom() gibt -1 und Ressource vorübergehend nicht verfügbar

Ich habe einen client und einen server-Kommunikation mit Datagrammen (UDP) in C. Der client sendet 5 Nachrichten und nach dem empfangen der Nachrichten, der server sendet die Nachrichten zurück. Empfangen und senden von Nachrichten sind die großen, bis der client beendet hat, empfangen die Nachrichten. Nach der server sendet alle Nachrichten zurück, es endet mit close(). so recvfrom() von client sollte 0 zurückgeben, richtig?

Vorausgesetzt, recvfrom() soll 0 zurückgeben beim close() von server-Seite, es gibt -1 zurück, stattdessen mit Fehler Resource temporarily unavailable. Ist diese Ressource-Referenz für geschlossene socket-server? Oder ist es etwas anderes, ganz anderes wie Puffer oder so etwas (was ich nicht glaube, ist wahr)?

Vorausgesetzt, meine Annahme war falsch, und -1 wird zurückgegeben, da der server beendet, sollte ich wohl den Fehler behandeln mit

if(SOMEMACRO)
   do something 

Wie finde ich heraus, was SOMEMACRO ist? Ich Drucke den Fehler, aber es sagt Ressource temp nicht verfügbar und recvfrom() Beschreibung nicht zu erwähnen, unavilable Ressource..?

Btw, dies ist ein non-blocking socket, wenn das macht keinen Unterschied, da ich gelesen habe, dass wenn O_NONBLOCK gesetzt ist und keine msg-Befehle sind verfügbar, es würde setzen Sie errno auf EAGAIN oder EWOULDBLOCK. O_NONBLOCK nicht gesetzt, aber MSG_DONTWAIT eingestellt ist. Sind Sie im Grunde die gleiche Sache, wo O_NONBLOCK ist für Allgemeine Datei-Deskriptoren und MSG_DONTWAIT ist socket-spezifisch ist??

Mein Gehirn funktioniert nicht so toll jetzt, wenn jemand könnte mich aufklären und verdeutlichen, was meine Verwirrung ist etwa, würde ich schätzen es. Danke!

Schreibe einen Kommentar