计算机网络综合实习一对一聊天(3)

2019-08-30 16:29

public void disconnect() { // 断开连接函数 try { dos.close(); // 关闭输出流 dis.close(); // 关闭输入流 s.close(); // 关闭断口

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

private class TFListener implements ActionListener { // 声明文本行的事件监听器类

public void actionPerformed(ActionEvent e) { // 覆写文本域的事件响应方法

Date d = new Date();

String str = d.toLocaleString() +\:巴卫 说: \ +tfTxt.getText().trim(); // 获取文本行的内容 tfTxt.setText(\); // 把文本行的内容显示到文本域 try { dos.writeUTF(str); // 向输出流缓冲写数据 dos.flush(); // 数据发送 } catch (IOException e1) { e1.printStackTrace(); } } }

private class RecvThread implements Runnable {

// 声明线程类,用来接收服务器对应线程发来的消息 public void run() { // 线程启动函数 try { while (bConnected) {

}

String str = dis.readUTF(); // 读取缓冲区数据

taContent.setText(taContent.getText() + str + '\\n'); // 把缓冲区内容显示在文本域上

9

}

}

}

} catch (SocketException e) { System.out.println(\退出了,bye!\); // 对方退出提示,非正常退出,像断电之类的 } catch (EOFException e) { System.out.println(\退出了,bye - bye!\); // 正常退出提示 } catch (IOException e) { // 捕获其他异常 e.printStackTrace(); }

2.服务器端

package src; import java.io.*; import java.net.*; import java.util.*; //引入线程相关包 public class Server { // 定义服务器端类 boolean started = false; // 服务器启动标志 ServerSocket ss = null; List clients = new ArrayList(); // 因为要使用多个客户端相连,所以声明客户端数组 public static void main(String[] args) { new Server().start(); } public void start() { try { ss = new ServerSocket(8888); // 设置服务器端口,TCP端口为8888 started = true; } catch (BindException e) { // 捕获打开多个服务器端的异常 System.out.println(\端口使用中....\); System.out.println(\请关掉相关程序并重新运行服务器!\); System.exit(0); } catch (IOException e) { e.printStackTrace(); } try {

10

while (started) { Socket s = ss.accept(); // 服务器启动后,接收自客户端的消息 Client c = new Client(s); // 创建客户端进程 new Thread(c).start(); // 启动客户端进程 clients.add(c); // 加入到客户端列表 }

} catch (IOException e) { e.printStackTrace(); } finally { try { ss.close(); } catch (IOException e) { e.printStackTrace(); } } }

class Client implements Runnable { // 声明客户端线程类 private Socket s;

private DataInputStream dis = null; private DataOutputStream dos = null; private boolean bConnected = false; public Client(Socket s) { // 客户端线程构造函数 this.s = s; try { dis = new DataInputStream(s.getInputStream()); dos = new DataOutputStream(s.getOutputStream()); bConnected = true; } catch (IOException e) { e.printStackTrace(); } }

public void send(String str) { // 发送消息函数 try { dos.writeUTF(str); } catch (IOException e) { clients.remove(this); System.out.println(\对方退出了!\);

11

} }

public void run() { }

}

}

try { while (bConnected) { // 向每个客户端发消息 String str = dis.readUTF(); for (int i = 0; i < clients.size(); i++) { Client c = clients.get(i); c.send(str); } } } catch (EOFException e) { System.out.println(\客户端退出!\); } catch (IOException e) { e.printStackTrace(); } finally { try { if (dis != null) dis.close(); if (dos != null) dos.close(); if (s != null) { s.close(); } } catch (IOException e1) { e1.printStackTrace(); } }

12

课程设计成绩评定表

学生姓名 专业班级 设计题目 实现一个一对一的聊天程序 指导教师评语及意见: 指导教师评阅成绩: 指导教师签字: 年 月 日


计算机网络综合实习一对一聊天(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:建设工程质量竣工验收意见书(桂质监档表19)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: