Sto solo ripulendo un po 'di codice che abbiamo scritto un po' indietro e ho notato che per un socket udp, 0 viene considerato come la connessione chiusa.Sotto Linux, può recv restituire sempre 0 su UDP?
Sono abbastanza sicuro che questo era il risultato del porting dello stesso ciclo di ricv dalla versione tcp equivalente. Ma mi fa meravigliare. Può recv restituire 0 per udp? su tcp segnala che l'altra estremità ha chiuso la connessione. udp non ha il concetto di una connessione, quindi può restituire 0? e se può, qual è il suo significato?
Nota: la pagina man in linux non distingue udp e tcp per un codice di ritorno pari a zero che potrebbe essere il motivo per cui abbiamo mantenuto il controllo nel codice.
Le prese UDP sono collegate o no? –
È possibile chiamare "connect" sui socket UDP, ma tutto ciò è assegnare un indirizzo/porta IP remoto al socket UDP. Ciò consente di chiamare solo "send" e "recv" senza sendto, recvfrom. Credo che funzioni anche come filtro e ti consente di ricevere solo i datagrammi di udp da quell'indirizzo. Quindi in un certo senso sono connessi, ma non come con il TCP. – Matt