2017-02-07 116 views
0

這是一件奇怪的事情,我創建了兩個套接字並將它們綁定到完全相同的地址(INADDR_ANY)和端口。無法接收iOS10上重複使用的套接字消息

SO_REUSEADDR設置爲兩個套接字時,第二個綁定將失敗,錯誤號爲EADDRINUSE

SO_REUSEPORT設置爲兩個套接字時,所有綁定調用都會成功,但只有第一個套接字可以接收數據,而以後綁定的套接字將永遠不會收到任何數據。

我目前在iOS 10上工作,我相信它在Android上的工作方式不同。 任何人都看到了同樣的問題?這是iOS預期的行爲嗎?如何在不釋放第一個套接字的情況下接收第二個套接字的數據?

回答

0

通過一個簡單的演示,我可以確認這是iOS(和類似的基於BSD的系統)的預期行爲,並且Linux/Android將表現相反。