ソケットライブラリの使用に問題があります。
import java.io.*;
import java.net.*;
public class SocketAdapter{
Socket mySocket=null;
PrintWriter out=null;
BufferedReader in=null;
public SocketAdapter(String host,int port){
try {
InetAddress serverAddr = InetAddress.getByName(host);
mySocket = new Socket(serverAddr, port);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
out = new PrintWriter(mySocket.getOutputStream(), true);
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void writeto(String data){
out.println(data);
}
public String readdata(){
String fromSocket=null;
try {
fromSocket = in.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// blocking
return fromSocket;
}
public void close(){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mySocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
私はメインアクティビティの2番目のスレッドを介してこのクラスにアクセスします。デバッガーでは、mySocketの値は常にnullです。何が間違っているのかわかりませんが、基本的なことだと確信しています。
編集:インターネットの許可がないアプリによってトリガーされたIOExceptionが原因で、ソケットオブジェクトがnullであることが判明しました。
マニフェストでそれを修正しました。