Android SocketServer.accept()使应用程序崩溃或有时不工作
每当我调用SocketServer时,它都会强制关闭应用程序。如果我在后台服务中运行它,那么它将跳过该代码Android SocketServer.accept()使应用程序崩溃或有时不工作,android,android-service,android-service-binding,android-background,Android,Android Service,Android Service Binding,Android Background,每当我调用SocketServer时,它都会强制关闭应用程序。如果我在后台服务中运行它,那么它将跳过该代码 public void run() { try { //Log.e("Debugging Data: ", "-------------->>>>> Here "+LocalServerThread.getState()); if (LocalServerThre
public void run() {
try {
//Log.e("Debugging Data: ", "-------------->>>>> Here "+LocalServerThread.getState());
if (LocalServerThread.getState() == Thread.State.RUNNABLE) {
try {
if(socClient!=null) {
ServerAsyncTask serverAsyncTask = new ServerAsyncTask();
serverAsyncTask.execute(new Socket[]{socClient});
}
}
catch(Exception ex)
{
Log.e("Debugging Data: ", "-------------->>>>> Server ERROR "+ex.getMessage());
}
}
}
catch(Exception ex)
{
Log.e("Debugging Data: ", "Not Running");
Log.e("Debugging Data: ", "New Thread Created");
LocalServerThread = new Thread() {
@Override
public void run() {
try {
//ServerSocket socServer = new ServerSocket(8088);
while (true)
{
socServer=null;
socServer = new ServerSocket(5000);
Log.e("Debugging Data: ", "-------------->>>>> 1 ");
socClient = socServer.accept();
Log.e("Debugging Data: ", "-------------->>>>> 2 ");
//Log.e("Debugging Data: ", "New Thread Running");
if(socClient==null) {
Log.e("Debugging Data: ", "SOC Client nULL");
socClient = socServer.accept();
Log.e("Debugging Data: ", "New SOC Client Created");
}
ServerAsyncTask serverAsyncTask = new ServerAsyncTask();
serverAsyncTask.execute(new Socket[]{socClient});
}
} catch (IOException e) {
Log.e("Debugging Data: ", "New Thread Error "+e.getMessage());
e.printStackTrace();
}
}
};
LocalServerThread.start();
Log.e("Debugging Data: ", "-------------->>>>> Here2 "+LocalServerThread.getState());
}
}
每当我调用SocketServer时
??抱歉,我在您发布的代码中没有看到SocketServer
。public void run(){
这是一个…?ServerAsyncTask ServerAsyncTask=new ServerAsyncTask();ServerAsyncTask.execute(new Socket[]{socClient});
您的代码中有两次这样的代码。该代码做什么呢?while(true){socServer=null;socServer=new ServerSocket(5000);…..}
。为什么要在连接客户端后创建新的服务器套接字?循环错误。1.实际上我在onStartCommand socServer=new ServerSocket(8088)中启动了SocketServer;@blackapps 2.我使用run方法,因为我正在新线程中运行此代码。。