【发布时间】:2017-09-28 09:42:20
【问题描述】:
我正在用 Java swing 编写一个聊天应用程序,它有一个自定义协议和使用套接字的服务器后端。我正在制作 ClientSide 连接处理程序。到目前为止,这是我的代码:
package Client;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.*;
import Common.Message;
public class ConnectionHandler {
Socket socket;
DataInputStream input;
DataOutputStream output;
public ConnectionHandler() throws UnknownHostException, IOException {
socket = new Socket(Client.HOST_INET,Client.PORT);
input = new DataInputStream(socket.getInputStream());
output = new DataOutputStream(socket.getOutputStream());
}
public void sendMessage(Message message) throws IOException {
output.writeUTF(Message.disasseble(message));
}
public Message getMessage() throws IOException {
String message;
message = input.readUTF();
return Message.assemble(message);
}
public void closeConnection() {
}
private void reconect(){
}
}
该应用由一个 CardLauut 组成,其中包含登录、注册和聊天 JPanel。每个 JPanel 都需要连接,只要应用程序正常运行,就应该保持连接。登录屏幕发送登录消息/回答与注册相同,当然还有聊天屏幕。
问题 我应该为 connectionHanler 使用单例设计模式吗?如果它在一个单独的线程上,比如带有 que 的连接线程,那么它是否也可以工作? (我知道我需要不时地 ping 服务器,否则连接可能会丢失,所以我需要重新连接并让 UI 知道)
【问题讨论】:
标签: java multithreading swing sockets design-patterns