最近学到了Java的网络编程,对TCP协议以及UDP协议有了一些初步的认识,现在尝试使用TCP协议建立一个简单的多人聊天室,去实现多人在线聊天。
以下是具体实现思路:
经过最初的学习,我们知道TCP协议是在两台计算机之间建立连接,然后可以把数据当作双向字节流进行交换, 以便达到传输的目的。但是这样只能达到双人聊天(私聊)的效果,而聊天室的特点在于某一个客户端发出的消息,在聊天室中的其他客户端都能接收到该消息(包括自己)。
基于以上考虑,我们可以在服务器设置一个集合(容器),每当有一个客户端连接,都将这个客户端存储到集合中,然后将某一个客户端发送的消息再通过遍历集合发送到每个连接到服务器的客户端。
同时,要实现一对多的连接,就需要用到多线程的思想:
public class ServerThread extends Thread{
private Socket socket;
private Set<Socket> set;
public ServerThread(Socket socket, Set<Socket> set){
this.socket=socket;
this.set=set;
}
@Override
public void run() {
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");//将消息发送时间格式化
try {