サーバークライアントモデルのAndroidプログラムを作成しました。私のPCはサーバーとして機能し、AVDはクライアントとして機能します。接続するサーバーのアドレスとして 10.0.2.2 を使用していますが、サーバー側は何も受信しません。クライアントが通常の Java プログラムの場合、私のサーバーは正常に動作します。クライアントが Android エミュレーターの場合に問題が発生します。私は非常に長い間この問題に取り組んできましたが、まだ解決策がありません。誰かが私を助けてくれることを願っています、ありがとう! 私のコード: サーバー:
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(6002);
while(true){
Socket client = server.accept();
BufferedReader in= new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println(in.readLine());
}
}
}
クライアント:
public class modules extends Activity {
private ListView myListView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modules);
myListView = (ListView)findViewById(R.id.listView1);
Intent intent = getIntent();
Bundle b = intent.getExtras();
String semester = b.getString("semester");
String subject = b.getString("subject");
try {
Socket socket = new Socket("10.0.2.2",6002);
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
String s1 = "SEME" + semester;
out.println(s1);
out.flush();
String s2 = "SUBJ" + subject;
out.println(s2);
out.flush();
socket.close();
} catch(UnknowHostException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}
logcat には次のようなエラーがあります。
android.os.NetworkOnMainThreadException;
また、Strict モードのエラー:
07-22 14:24:24.892: E/AndroidRuntime(759): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099).
マニフェスト xml ファイルにユーザー権限を追加したので、問題は別のものに違いありません。