パソコンとandroid端末とのsocket通信をやっています。
以下の3つのクラスを作成します。
1)staticなsocketを置いておくクラス
public class MainSocket() {
public static Socket socket;
}
2)MainActivity
ここで、
InetAddress inetAddress = InetAddress.getByName(wifiIpAdress);
MainSocket.socket = new Socket(ip,port,inetAddress,port);
などをして接続を確立させて通信する。
3)SubActivity
MainActivityから移動するクラス
ここでも通信する。
というのを3つ作成してみました。
MainActivity上では、接続、送信、受信が行えるのですが、
画面遷移してSubActivity上で送信しようとするとだと切断になってしまいます。close() などはしていません。
MainActivity上で接続を確立させたので、それをそのままSubActivityで利用しようとするとエラーになるようです。
画面遷移するとソケットはなんだかおかしくなるのでしょうか?
それともsocketの使い方が間違っているのでしょうか?
=============================================
11-21 16:10:31.682: W/System.err(8942): java.net.SocketException: Socket closed
11-21 16:10:31.692: W/System.err(8942): at libcore.io.Posix.sendtoBytes(Native Method)
11-21 16:10:31.692: W/System.err(8942): at libcore.io.Posix.sendto(Posix.java:155)
11-21 16:10:31.692: W/System.err(8942): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
11-21 16:10:31.692: W/System.err(8942): at libcore.io.IoBridge.sendto(IoBridge.java:466)
11-21 16:10:31.692: W/System.err(8942): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
11-21 16:10:31.692: W/System.err(8942): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
11-21 16:10:31.692: W/System.err(8942): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
11-21 16:10:31.692: W/System.err(8942): at java.io.OutputStream.write(OutputStream.java:82)