使用Socket连接到模拟器

时间:2012-12-27 09:34:27

标签: android android-emulator

我试图使用SocketServer来设置服务器

int i =1, PORT = 6666;
ServerSocket server;
Socket client;
try {
    server = new ServerSocket(6666);
    for(;;){
        client = server.accept();//fail in here
        textView.setText("server accept..." + i);
        //new MyHttpServer(client, i, PORT).start();
        i++;
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    //e.printStackTrace();
    textView.setText("Fail...");
}

但是,该应用始终在server.accept()停止。我已经为此应用添加了互联网权限。我不知道为什么?

更新: 我找到了原因。这是因为线程无法从Active实例启动。我在没有线程的情况下在onStart中调用了server.accept()。现在我为它打开一个新的Runnable,然后修复

2 个答案:

答案 0 :(得分:1)

您的应用程序无法启动服务器的原因可能有多种。我最初的猜测是你试图在模拟器或设备上运行代码,而你已经有一些其他应用程序在该端口上进行侦听。

您必须检查/提供logcat跟踪才能找到错误原因。

答案 1 :(得分:0)

我认为您的应用会等待客户端端口6666。

 server.accept();// return socket

如果客户端可用,上面的代码将返回套接字。有关更多详细信息和清晰度,您可以参考这些链接::

http://www.happygeek.in/socket-programming-in-android

http://www.edumobile.org/android/android-development/socket-programming/