Android4.0でDatagramSocketを使うときの罠

頭に来たので書く。
Android4.0にしたNexus SでUDPソケットを使ったプログラムが動かない。
どうやら、DatagramPacketのcapacityが前回取得時の値に固定されている?
で、悩みに悩んで打った対策がこれ。
「DatagramSocket.SetData()をreceive()の前に毎回行う」

try {
m_socket.setSoTimeout(15000);
// setDataを読み込みの度に必ず行わないとAndroid4.0で受信サイズが固定されてしまう!
packet.setData(m_buffer); // byte[] m_buffer = new byte[1024];
m_socket.receive(packet);
} catch (SocketTimeoutException e) {
以下省略

これって仕様? バグ?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください