• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Androidのソケット通信(初歩))

Androidのソケット通信(初歩)

このQ&Aのポイント
  • Androidでソケット通信を行いたいなのですがエミュレータ環境でも実機環境でもうまく動作しません。
  • 通常のJavaプログラム間でなら通信できるのですが、何かやり方が間違っているのでしょうか?
  • 以下の単純なプログラムを使用しています。また、IP、Portは正しくファイアウォールも無効にしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

投げられている例外名 NetworkOnMainThreadException でぐぐったらこんなページが出てきました。たぶんこれが原因でしょう。 http://garnote.com/2012/10/android-os-networkonmainthreadexception.html

その他の回答 (3)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.4

No.3の方が回答している通り、スレッドを作成し、そのスレッドからソケットを作る必要があるようですね。

  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

at java.net.Socket.startupSocket(Socket.java:566) at java.net.Socket.tryAllAddresses(Socket.java:108) at java.net.Socket.<init>(Socket.java:177) at java.net.Socket.<init>(Socket.java:149) これらは例外のスタックトレースなので、 そもそもこれらが発生した原因がIOExceptionのgetMessage()などから取得できるはずです。 単純に、e.printStacktrace()を行なってください。

oxfax
質問者

補足

初心者ですみません。。 e.printStacktrace()の結果で FATAL EXCEPTION: main android.os.NetworkOnMainThreadException の後に at java.net.Socket.startupSocket(Socket.java:566) at java.net.Socket.tryAllAddresses(Socket.java:108) at java.net.Socket.<init>(Socket.java:177) at java.net.Socket.<init>(Socket.java:149) のログが続きます。

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

例外メッセージ(IOExceptionの方)を取得し、表示した方がいいです。 そこ中に原因が書かれていませんか?

oxfax
質問者

補足

at java.net.Socket.startupSocket(Socket.java:566) at java.net.Socket.tryAllAddresses(Socket.java:108) at java.net.Socket.<init>(Socket.java:177) at java.net.Socket.<init>(Socket.java:149) などが出ています。 IPが間違っている、あるいはサーバーがうまく機能していないのでしょうか? エミュレータがクライアントの場合、サーバーのIPは127.0.0.1か192.168.***.***(PCのIP)でいいのでしょうか?

専門家に質問してみよう