2017-02-07 5 views
0

ここでは奇妙なことですが、私は2つのソケットを作成し、まったく同じアドレス(INADDR_ANY)とポートにバインドします。iOS10で再使用されたソケットのメッセージを受け取ることができません

SO_REUSEADDRが両方のソケットに設定されている場合、2番目のバインドはエラーEADDRINUSEで失敗します。

SO_REUSEPORTが両方のソケットに設定されている場合、すべてのバインドコールは成功しますが、最初のソケットだけがデータを受信できます。後でバインドするソケットはデータを受信しません。

私は現在iOS 10で作業していますが、Androidでは動作が異なると思われます。 誰もが同じ問題を抱えていますか?これは、iOSの意図した動作ですか?どのようにして最初のソケットを解放せずに2番目のソケットのデータを受け取ることができますか?

答えて

0

シンプルなデモでは、これがiOS(および類似のBSDベースのシステム)の動作であることを確認できます.Linux/Androidは逆の動作をします。

関連する問題