【发布时间】:2013-12-18 19:10:43
【问题描述】:
情况:- client1:用户端应用程序,他们使用用户名连接到服务器。连接是为了保持活动状态,client1 等待来自服务器的消息。
client2:事件触发的应用程序向服务器询问所有连接的用户并关闭其连接。它将处理用户列表并选择一个用户。它将连接回服务器并要求它向选定的用户发送消息。
服务器:在 11111 上侦听 client1 和在 22222 上侦听 client2。与 client1 的连接将保持活动状态,直到用户在 client1 软件中注销。 client2 请求列表,选择一个元素,要求服务器将消息中继到 client1 的该实例。如果此时 client1 已关闭,则服务器会以 false 响应,并且 client2 会返回获取 client1 的活动实例列表的步骤。
我面临的问题:- 如何在 client1 中实现一个系统,以便在用户操作连接 UI 元素时连接到服务器,然后它始终保持连接处于活动状态,如果连接断开,它会自行重新连接。同时它应该轮询输入流以接收服务器在连接时可能发送的任何消息。
准确地说,我在通过 2 个线程访问同一个套接字实例时遇到问题,一个线程保持连接活动并在出现故障时重新连接,另一个线程继续在输入流中查找数据。如果 KeepAlive 线程检查连接,同时 MessageReader 线程正在接收数据,那么系统将崩溃。
【问题讨论】:
标签: java multithreading sockets client-server keep-alive