Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器套接字不工作_Java_Android - Fatal编程技术网

Java 服务器套接字不工作

Java 服务器套接字不工作,java,android,Java,Android,我是初学者。我运行以下代码 import android.app.Activity; import android.os.Bundle; import android.os.NetworkOnMainThreadException; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MainActivity extends Activity

我是初学者。我运行以下代码

 import android.app.Activity;
 import android.os.Bundle;
 import android.os.NetworkOnMainThreadException;

 import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.Socket;


public class MainActivity extends Activity {

ServerSocket server = null;

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

    try {
        server = new ServerSocket(4444);
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        Socket client = server.accept();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
} 
但我只能在emulator运行时看到应用程序停止工作的消息。我发现错误发生在语句Socket client=server.accept();。我想这句话会一直等到客户的请求被接受。还添加了这些用户权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

我正在使用android studio。和sdk 14。
谢谢

您无法在UI线程上运行网络,我认为您需要(1)接受时,请尝试以下操作:

new线程(new Runnable()){
公开募捐{
试一试{
Socket client=server.accept();
}捕获(IOE异常){
e、 printStackTrace();
}
}

}).start()Android UI线程永远不会长时间运行。因此,您应该在代码中启动线程

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    try {
        server = new ServerSocket(4444);
    } catch (IOException e) {
         e.printStackTrace();
    }
    new thread(){
          void run(){
            server.accept();
          }    
    }.start();
 }

谢谢。它起作用了。但我不知道这条线索什么时候开始。我在线里面画了一个断点。但节目从未就此停止过。