我是个初学者。我运行以下代码。
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();
}
}
} 但我只能在模拟器中看到运行时应用程序停止工作的消息。我发现这个错误发生在语句Socket client = server.accept();。我认为这条语句将等到客户端请求被接受。还添加了这些用户权限。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>我用的是安卓工作室。和sdk 14.谢谢
发布于 2014-11-27 16:04:06
您不能在UI线程上运行网络,我认为您需要同时(1)当接受时,尝试如下:
new Thread(new Runnable() {
public void run() {
try {
Socket client = server.accept();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
发布于 2014-11-27 16:19:59
Android线程不会很长的operation.so,您应该在代码中启动线程。
@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();
}https://stackoverflow.com/questions/27174556
复制相似问题