localhost上的Java tcp客户端连接到模拟器上的android服务器

时间:2013-04-25 06:06:20

标签: android sockets emulation

我开发了一个Android服务器并尝试使用模拟器进行测试:

这是Android服务器代码:

 public class MainActivity extends Activity {

private static String TAG = "ServerSocketTest";
private ServerSocket server;

Runnable conn = new Runnable() {
    public void run() {
        try {
            server = new ServerSocket(53000);

            while (true) {
                Log.d(TAG, "server waiting for connection");
                Socket socket = server.accept();
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));

                String str = in.readLine();

                Log.i("received response from server", str);

                in.close();
                socket.close();
            }
        } catch (IOException e) {
            Log.e(TAG, e.getMessage());
        } catch (Exception e) {             
            Log.e(TAG, e.getMessage());
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(conn).start();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
protected void onPause() {      
    super.onPause();
    if (server != null) {
        try {
            server.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}   

 }

现在的问题是如何让我的TCP客户端在模拟器上连接到这个服务器?

我在客户端有这一行。此客户端是在桌面上运行的Java:

clientSocket = new Socket("localhost", 53000);

但是我得到IOException ... 谢谢!

1 个答案:

答案 0 :(得分:0)

我设法通过using redirection in Android console来解决问题。