异步套接字连接,当服务器断开TCP通信时,客户端GUI挂起
Async socket connection, Client GUI Hangs When Server is Disconnected TCP Communication
在使用.Net For GUI时,我正在使用Tcp套接字在CLR C++(服务器)到Android(客户端)之间进行通信。当数据被传送和接收时。在C++应用程序中使用后台工作程序
if(backgroundworker1->CancellationPending)
{
listenerSocket->Close(); // Listener Socket is Closed
netStream->Close();
serverSocket->Close();
serverSocket->Shutdown(SocketShutdown::Both);
e->Cancel;
break;
}
在安卓系统中,我使用异步类执行,并从套接字接收到处理程序的文本。在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)所有服务器套接字都已关闭,移动套接字也已关闭,为什么UI没有响应?请帮忙。。
问题出现在doinbackground的Client中,它再次调用while循环,因此导致异常,因为套接字中没有接收到数据,导致异常。最后,为客户端添加了一些睡眠,在一段时间后,客户端会查询服务器,而如果没有来自服务器的消息,则客户端会关闭并转移到执行后功能。
相关文章:
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 提升::Asio 异步聊天客户端停止与服务器通信
- UDP客户端/服务器程序在不同的IP和端口上通信超过2个插座
- 如何让客户端通过modbus-tcp协议与多个服务器通信?
- 如何将数据序列化为C++ zmq 客户端和 Python zmq 服务器之间的通信
- 使用UNIX套接字C++客户端与Node.js服务器通信的简单示例
- 嗅探 QWebsocket 服务器 - 客户端通信
- 证书验证在客户端服务器通信中使用boost :: asio和openssl失败
- 客户端JavaScript和C 套接字服务器之间的通信
- 如何在服务器和客户端之间进行异步通信
- C++:一个客户端与多个服务器通信
- C++:服务器和客户端之间的经典通信练习
- C++ 客户端无法与 Java 服务器通信
- 使用 C/C++、SSL 协议的客户端和服务器通信不起作用
- 如果传递长类型,32位客户端如何与64位服务器通信
- c++tcp多线程客户端/服务器-如何与线程套接字处理程序进行通信
- 如何中断客户端和服务器的通信
- Raspberry Pi 和 Android 之间的客户端-服务器通信
- C/C++服务器,通过stdin/stdout与客户端通信(阻塞stdin,直到读取了大量字节)
- 具有进程间通信功能的服务器-客户端日志记录体系结构.你知道解决方案吗?