少し前に書いたコードをクリーンアップしているところですが、udp ソケットの場合、接続が閉じられたものとして 0 が扱われていることに気付きました。
これは、同等の tcp バージョンから同じ recv ループを移植した結果であると確信しています。しかし、それは私を不思議に思います。recv は udp に対して 0 を返すことができますか? tcp では、相手側が接続を閉じたことを通知します。udp には接続の概念がないため、0 を返すことはできますか? 可能であれば、それはどういう意味ですか?
注: Linux のマニュアル ページでは、戻りコードがゼロの場合に udp と tcp を区別していません。