Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Android SocketServer.accept()使应用程序崩溃或有时不工作_Android_Android Service_Android Service Binding_Android Background - Fatal编程技术网

Android SocketServer.accept()使应用程序崩溃或有时不工作

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

每当我调用SocketServer时,它都会强制关闭应用程序。如果我在后台服务中运行它,那么它将跳过该代码

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方法,因为我正在新线程中运行此代码。。