私はデーモンのperlでこのようなソケットを作成しました
IO::Socket::INET->new(LocalPort => $port,
Proto => 'udp',Blocking => '0') or die "socket: $@";
Linuxマシンの場合
ソケットは、期待どおりのrecv呼び出し中に、期待どおりに非ブロッキングソケットのように動作します
$sock->recv($message, 128);
。
ただし、デーモンの実行中にデータを受信しているときにeth0のVIFが再構成されると、recv呼び出しがブロックを開始することを一貫して観察しています。
これは非常に厄介な問題です。私はそうしました$sock->recv($message, 128, MSG_DONTWAIT);
、そして、recv呼び出しは非ブロッキングになります。
私はグーグルで検索しましたが、UDPノンブロッキングソケットを使用するための推奨される方法がわかりませんでした。