Java程序设计:Java 网络聊天室客户端

embedded/2024/9/24 16:07:40/

相关网络编程前两篇文章:Java程序设计:Java网络编程实验

服务端部分见上一篇文章:Java程序设计:Java网络聊天室服务端

目录

1 实验名称

2 实验目的

3 实验源代码

4 实验运行结果图

5 总结


1 实验名称

       Java 网络聊天室客户端

2 实验目的

       继续熟练掌握在eclipse中调试代码

       掌握Java面向对象思想掌握多线程在该项目中的使用

       掌握GUI编程在该项目中的使用

       掌握IO在该项目中的使用

       掌握多线程在该项目中的使用

       掌握Java 网络编程在该项目中的使用

       掌握TCP协议和Socket套接字编程在该项目中的使用

3 实验源代码

java">package Text01.NetworkProgrammingText;import java.io.*;
import java.net.*;
import java.util.Scanner;public class Client {private String hostname; // 服务器地址private int port; // 服务器端口private String clientName; // 客户端名称public Client(String hostname, int port, String clientName) {this.hostname = hostname;this.port = port;this.clientName = clientName;}public void start() {try {Socket socket = new Socket(hostname, port); // 连接服务器System.out.println("连接服务器成功!");BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 输入流,用于读取服务器发送的消息BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 输出流,用于向服务器发送消息output.write(clientName + "\n"); // 输入客户端名称output.flush();Thread readThread = new Thread(new Runnable() { // 创建新线程用于读取服务器发送的消息@Overridepublic void run() {try {String message;while ((message = input.readLine()) != null) { // 循环读取服务器发送的消息并在控制台上显示System.out.println(message);}} catch (IOException e) {System.out.println("读取服务器消息失败: " + e.getMessage());}}});readThread.start(); // 启动新线程BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 控制台输入流String message = "";while (!message.equals("bye")) { // 循环读取用户控制台输入并发送给服务器message = reader.readLine();output.write(clientName + ": " + message + "\n");output.flush();}readThread.interrupt(); // 中断新线程input.close(); // 关闭输入流、输出流和socket连接output.close();socket.close();} catch (IOException e) {System.out.println("连接服务器失败: " + e.getMessage());}}public static void main(String[] args) {String hostname = "127.0.0.1"; // 获取服务器地址int port = Integer.parseInt("8080"); // 获取服务器端口号String clientName = "8000"; // 获取客户端名称Client client = new Client(hostname, port, clientName); // 创建客户端对象client.start(); // 启动客户端}
}

4 实验运行结果图

5 总结

       此次实验通过创建服务器、处理客户端请求、多线程服务器、客户端编程等一系列步骤完成了这次任务。此次实验中,使用ServerSocket类创建了一个简单的服务器,并处理了客户端连接请求;接着使用Socket类处理了客户端发送的消息,并向客户端返回相应消息;然后使用多线程服务器来处理多个客户端的连接请求,实现了并发处理功能;最终也实现了一个简单的客户端程序,并与服务器进行通信。  


http://www.ppmy.cn/embedded/93702.html

相关文章

目标检测进阶:2.Faster R-CNN算法

目录 源码下载 Faster R-CNN论文 一、Faster R-CNN第一阶段 1.主干特征提取网络 2.区域提议网络 先验框 RPN网络输出 建议框 3.计算一阶段模型的损失 二、Faster R-CNN第二阶段 1.ROI Pooling(Region of Interest Pooling) 2.分类和回归 3.计…

优购电商小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商品分类管理,商品信息管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页,商品信息&#xf…

Matplotlib绘图入门

learnForMatplotlib Matplotlib绘图与可视化学习 jupyter notebook使用交互式绘图,需要先执行以下代码 %matplotlib notebook 导入环境 import matplotlib.pyplot as plt import numpy as np 画布操作 绘制一条直线 data np.arange(10)#生成[0, 1, 2, 3, 4…

【Rabbitmq的消息模型】

消息队列的特性 durable:队列持久化。如果设置持久化,那么无论RabbitMQ在关闭时,就会将队列存储到本地磁盘,无论宕机还是重启,队列也不会删除;如果设置不持久化,那么在RabbitMQ关闭时&#xff…

C# Unity 面向对象补全计划 七大原则 之 合成/聚合复用原则( CARP)难度:☆☆☆☆ 总结:在类中使用类,而不是继承类

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.合成/聚合复用原则&…

Ubuntu-18.04.1安装JetBrains PyCharm 2018.1.6 专业版(永久破解方法)

软件安装包下载地址:Other Versions - PyCharm 将安装包放置Ubuntu系统中解压,到bin目录下找到pycharm.sh即可打开。 补丁破解方式(需关闭软件pycharm,否则会打不开pycharm!!!)&am…

golang判断某个文件内容是否是二进制文件方法, LimitReader, 获取文件大小,字符串0写入后的byte数据为48, byte零值

go语言中判断某个文件是否是二进制文件的方法, 通过LimitReader读取指定大小的数据后对数据进行判断, 这里有一个很有趣的知识点就是 字符串0在写入文件后,再通过io read读取后的byte数据他在内存中显示的可不是0 而是变成了 48, 十六进制 0x…

基于yolov8进行目标识别的文件部署步骤

1 yolov8模型简介 YOLOv8(You Only Look Once version 8)是YOLO(You Only Look Once)系列模型的最新版本,延续了YOLO系列的实时目标检测方法。YOLOv8在架构、训练过程和性能方面做了多项改进,旨在提升检测…