C/S体系结构网络程序的聊天系统

三个类User,Client,Server。
User:两个私有变量:name和需要连接的服务器的IP。这是本地连接,所以IP是127.0.0.1

Server:建立ServerSocket监听,并使用Socket获取输出流输出。
显示配置信息:设置人数上限,端口号。可以点击启动和停止按钮,显示在线用户列表,发送信息,显示所有用户发送的信息。客户端线程的列表。ArrayList clients。群发信息:通过遍历所有客户端的用户,群发。

(1) 服务器线程:使用serverSocket建立TCP服务器端。不停的等待客户端的连接,每当接收到客户端Socket请求时,服务器端也产生一个Socket。进行Socket通信。然后,开启此客户端服务的线程,clients.add(client); 更新在线列表DefaultListModel ListMode, listModel.addElement(client.getUser().getName());
(2) 客户端线程:通过Socket接收客户端的基本用户信息,反馈连接成功信息,反馈当前在线用户信息(遍历)。向所有用户发送上线命令(遍历)
点击断开连接:向所有在线用户发送该用户的下线命令(遍历),更新在线列表(ListMode) ,删除此条客户端服务线程(遍历,clients.remove(i), clients.get(i).stop())

Client:显示连接信息,包括端口号,服务器IP地址(通过IP找到对方计算机,通过端口号找到对方计算机的进程)。姓名。点击连接,如果服务器已经启动了,就可以连接了。显示在线用户,写消息,显示所有用户发送的消息。
(1)connectServer方法,参数:端口号,IP地址,姓名。使用socket建立与指定端口号IP地址的连接,并使用Socket获取输入流输出流。开启接受消息的线程。
(2)messageThread;// 负责接收消息的线程,HashMap();存放所有在线用户的信息。连接服务器的参数:端口号,服务器IP,姓名。
接收的消息有:服务器已关闭命令,有用户上线或下线更新在线列表,人数已达上限。

你可能感兴趣的:(项目)