頭に来たので書く。
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) { 以下省略
これって仕様? バグ?