同じ 40K バイト配列を 16 個のソケットに書き込むスレッドがあります (ソケット配列を反復処理し、すべてのソケットにバイト配列全体が送信されます)。これを 100ms ごとにループで繰り返します。
送信者は Android nexus 7 デバイスで、受信者は Windows 7 です。
約 30 秒後、ライターの 1 つがハングアップします。
Posix.sendtoBytes(FileDescriptor, Object, int, int, int, InetAddress, int) line: not available [native method]
Posix.sendto(FileDescriptor, byte[], int, int, int, InetAddress, int) line: 146
BlockGuardOs.sendto(FileDescriptor, byte[], int, int, int, InetAddress, int) line: 177
IoBridge.sendto(FileDescriptor, byte[], int, int, int, InetAddress, int) line: 473
PlainSocketImpl.write(byte[], int, int) line: 507
PlainSocketImpl.access$100(PlainSocketImpl, byte[], int, int) line: 46
PlainSocketImpl$PlainSocketOutputStream.write(byte[], int, int) line: 269
これはアンドロイドのバグでしょうか?それは並行性の問題ですか、それともネットワークの問題ですか? どんなアイデアでも素晴らしいでしょう。