Java聊天室课程设计报告 下载本文

内容发布更新时间 : 2024/12/24 20:43:39星期一 下面是文章的全部内容请认真阅读。

ClientThread temp = clients.get(i);

clients.remove(i);// 删除此用户的服务线程 temp.stop();// 停止这条服务线程 return; } } } else {

dispatcherMessage(message);// 转发消息 }

} catch (IOException e) { e.printStackTrace(); } } }

其运行截图如下图所示:

(2)、客户端主程序

本程序使用了默认的卡片布局方式,对窗口的大小进行设置,让聊天窗口能

5

够居中显示,以及登录主窗口类。

实现窗口布局功能和类的调用功能的主要代码如下: * 连接服务器 *

* @param port * @param hostIp * @param name */

public boolean connectServer(int port, String hostIp, String name) { // 连接服务器 try {

socket = new Socket(hostIp, port);// 根据端口号和服务器ip建立连接 writer = new PrintWriter(socket.getOutputStream()); reader = new BufferedReader(new InputStreamReader(socket .getInputStream()));

// 发送客户端用户基本信息(用户名和ip地址)

sendMessage(name + \ // 开启接收消息的线程

messageThread = new MessageThread(reader, textArea); messageThread.start();

isConnected = true;// 已经连接上了 return true;

} catch (Exception e) {

textArea.append(\与端口号为:\地址为:\ + \的服务器连接失败!\ isConnected = false;// 未连接上 return false; } }

(5)、 聊天窗口程序设计

程序提供了发送文字和关闭聊天的的简单功能。以下是实现程序的主要方

6

法:

* 发送消息 *

* @param message */

public void sendMessage(String message) { writer.println(message); writer.flush(); } /**

* 客户端主动关闭连接 */

@SuppressWarnings(\

public synchronized boolean closeConnection() { try {

sendMessage(\发送断开连接命令给服务器 messageThread.stop();// 停止接受消息线程 // 释放资源 if (reader != null) { reader.close(); }

if (writer != null) { writer.close(); }

if (socket != null) { socket.close(); }

isConnected = false; return true;

} catch (IOException e1) {

7

e1.printStackTrace(); isConnected = true; return false; } }

其运行截图如下图所示:

8