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();
}
谢谢。它起作用了。但我不知道这条线索什么时候开始。我在线里面画了一个断点。但节目从未就此停止过。