0

同じ 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

これはアンドロイドのバグでしょうか?それは並行性の問題ですか、それともネットワークの問題ですか? どんなアイデアでも素晴らしいでしょう。

4

1 に答える 1

0

リーダーの読み取りが遅いため、受信バッファーがいっぱいになり、送信バッファーがいっぱいになるため、ブロックします。

于 2013-04-23T23:19:08.187 に答える