俺のWindowsTIPS

FC2から引っ越しました

DatagramPacket DatagramSocket send 失敗

2014-05-16 12:14:41 | 開発[Android]
UDPを用いる場合は、DatagramPacket となっている。

String sendStr = "TEST";
byte []bufa = sendStr.getBytes();

InetSocketAddress remoteAddress
= new InetSocketAddress(getBroadcastAddress(this), UDPPORT);

udpSocket = new DatagramSocket();
udpSocket.setBroadcast(true); //しなくていいはずだけど

sendPacket= new DatagramPacket(buf,buf.length, remoteAddress);
udpSocket.send(sendPacket);


これいわゆるお手本どおりだと思う。
全部tryで囲んで

} catch (SocketException e) { TellToast("SocketExceptionだぜ");
} catch (IOException e) { TellToast("IOExceptionだぜ");
} catch (SecurityException e) { TellToast("SecurityExceptionだぜ");
} catch (Exception e) { TellToast("Exceptionだぜ");


これを Android2で行うと正常に終了する。
だが、 Android4で行うと Exception をキャッチしてしまう。

どうしても udpSocket.send(sendPacket)ができない。
(ちなみに受信は2でも4でもばっちりできる)

なにかセットが足りないのか?
色々やってみたけど解決しない。


もともと
android:targetSdkVersion="17" />
にしていた。
なのでターゲットをAPI10 Android2.3.3 にしてみた。

すると・・・・・・・・・
Android4でもばっちり・・・・・・・・・
なんなんこれ・・・ORZ


このアプリに関しては、
API17がなんかええ感じに昔のも動かしてくれる
と聞いたので試すのも目的だったが、もうなし決定。

テスト完了後、
新しいプロジェクトできっちりAPI指定した上で作ろう。


ちなみに レシーブ(受信)の場合も

packet.setData(buf);  // byte[] buf = new byte[256];
Socket.receive(packet);

Android4の場合はこれをしないと罠らしい。
http://www.zakugiri.com/MT/archives/2012/02/android40datagr.html


最新の画像もっと見る

コメントを投稿