Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.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
异步套接字连接,当服务器断开TCP通信时,客户端GUI挂起 我使用TCP套接字在Cli+C++(Server)到Android(客户端)之间进行通信,同时使用.NET进行GUI。 当数据被传送和接收时。在C++应用程序中使用后台工作者 if(backgroundworker1->CancellationPending) { listenerSocket->Close(); // Listener Socket is Closed netStream->Close(); serverSocket->Close(); serverSocket->Shutdown(SocketShutdown::Both); e->Cancel; break; }_Android_C++_Sockets_Tcp_Clr - Fatal编程技术网

异步套接字连接,当服务器断开TCP通信时,客户端GUI挂起 我使用TCP套接字在Cli+C++(Server)到Android(客户端)之间进行通信,同时使用.NET进行GUI。 当数据被传送和接收时。在C++应用程序中使用后台工作者 if(backgroundworker1->CancellationPending) { listenerSocket->Close(); // Listener Socket is Closed netStream->Close(); serverSocket->Close(); serverSocket->Shutdown(SocketShutdown::Both); e->Cancel; break; }

异步套接字连接,当服务器断开TCP通信时,客户端GUI挂起 我使用TCP套接字在Cli+C++(Server)到Android(客户端)之间进行通信,同时使用.NET进行GUI。 当数据被传送和接收时。在C++应用程序中使用后台工作者 if(backgroundworker1->CancellationPending) { listenerSocket->Close(); // Listener Socket is Closed netStream->Close(); serverSocket->Close(); serverSocket->Shutdown(SocketShutdown::Both); e->Cancel; break; },android,c++,sockets,tcp,clr,Android,C++,Sockets,Tcp,Clr,在Android中,我使用异步类执行并从套接字接收文本到处理程序。在Doinbackground函数中,我正在使用此代码 try { socket = new Socket(dstAddress, dstPort); BufferedReader inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));

在Android中,我使用异步类执行并从套接字接收文本到处理程序。在Doinbackground函数中,我正在使用此代码

        try
        {

            socket = new Socket(dstAddress, dstPort);
            BufferedReader inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            do
            {
                try
                {
                    if (!inputStream.ready())
                    {
                        if (message != null)
                            {
                                MainActivity.handler.obtainMessage(0, 0, -1,"Server: " + message).sendToTarget();
                            message = "";
                        }
                    }
                    int num = inputStream.read();
                    message += Character.toString((char) num);
                    Log.e(message,message);
                }
                catch (Exception classNot)
                {
                    Log.e("Client TASK","classnot exception");
                }
            }

            while (!message.equals("bye"));
            inputStream.close();
            socket.close();
        }
当我从服务器和(Backgroundworker1->CancellationPending)发送Bye消息时,我不明白
所有服务器套接字都已关闭,移动套接字也已关闭。为什么UI没有响应?请帮助..

问题出在doinbackground中的客户端,它再次调用while循环,因此导致异常,因为套接字中未收到任何数据,导致异常。最后向客户端添加了一些睡眠,在一段时间后,客户端查询服务器,而如果没有来自服务器的消息,客户端将关闭并切换到执行后功能