用Java写网络聊天系统你会吗???

1.使用Socket进行编写代码:这里还涉及多线程的简单应用。

2.首先创建一个MyWriter类,用于发送客户端和服务器端的聊天信息。

/** Copyright (c) 2020, 2023,  All rights reserved.**/import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;/*** <p>Project: JavaStudy - MyWrter</p>* <p>Powered by scl On 2023-07-26 12:43:49</p>* <p>描述:<p>** @author scl [1846080280@qq.com]* @version 1.0* @since 17*/
public class MyWriter implements Runnable {private String msg;private PrintWriter out;private Socket c;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public PrintWriter getOut() {return out;}public void setOut(PrintWriter out) {this.out = out;}public Socket getC() {return c;}public void setC(Socket c) {this.c = c;}public MyWriter(String msg, Socket c) {this.msg = msg;try {this.out = new PrintWriter(c.getOutputStream());} catch (Exception e) {e.printStackTrace();}this.c = c;}public MyWriter() {}@Overridepublic void run() {while (true) {Scanner sc = new Scanner(System.in);out.printf("%s %s",this.msg ,sc.nextLine() + "\r\n");out.flush();}}
}

3.再创建一个MyReader类,用于接收客户端和服务器端的聊天信息。

/** Copyright (c) 2020, 2023,  All rights reserved.**/import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;/*** <p>Project: JavaStudy - MyReader</p>* <p>Powered by scl On 2023-07-26 12:51:16</p>* <p>描述:<p>** @author scl [1846080280@qq.com]* @version 1.0* @since 17*/
public class MyReader implements Runnable {private Socket c;private BufferedReader br;public MyReader(Socket c) {this.c = c;try {this.br = new BufferedReader(new InputStreamReader(c.getInputStream()));} catch (Exception e) {e.printStackTrace();}}public Socket getC() {return c;}public void setC(Socket c) {this.c = c;}public BufferedReader getBr() {return br;}public void setBr(BufferedReader br) {this.br = br;}public MyReader() {}@Overridepublic void run() {while (true) {try {System.out.println(this.br.readLine());} catch (Exception e) {e.printStackTrace();}}}
}

4.然后就是调用着两个线程,创建一个服务器端,来接收和发送信息。

/** Copyright (c) 2020, 2023,  All rights reserved.**/import java.net.ServerSocket;
import java.net.Socket;/*** <p>Project: JavaStudy - MyServer</p>* <p>Powered by scl On 2023-07-26 12:55:15</p>* <p>描述:<p>** @author scl [1846080280@qq.com]* @version 1.0* @since 17*/
public class MyServer {public static void main(String[] args) {try {ServerSocket s=new ServerSocket(9090);Socket c=s.accept();new Thread( new MyWriter("服务器:",c)).start();new Thread(new MyReader(c)).start();} catch (Exception e) {e.printStackTrace();}}
}

5.创建一个客户端来发送和接信息。

/** Copyright (c) 2020, 2023,  All rights reserved.**/import java.net.Socket;/*** <p>Project: JavaStudy - Myclinet</p>* <p>Powered by scl On 2023-07-26 12:58:52</p>* <p>描述:<p>** @author scl [1846080280@qq.com]* @version 1.0* @since 17*/
public class Myclinet {public static void main(String[] args) {try {Socket c=new Socket("192.168.21.30",9090);new Thread(new MyReader(c)).start();new Thread(new MyWriter("客户:",c)).start();} catch (Exception e) {e.printStackTrace();}}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB | 产生阿尔法稳定分布噪声并作出概率密度函数

一、问题描述 想产生不同特征参数的α稳定随机变量&#xff0c;并且作出其概率密度函数进行对比。 二、解决思路 运行了MATLAB的官方实例代码&#xff1a; openExample(‘stats/ComparePDFsOfStableDistributionsExample’) &#xff08;1&#xff09;使用makedist()函数生成…

数据可视化(2)

1.柱状图 #柱状图 #bar(x,height,width,*,aligncenter,**kwargs) #height柱子的高度&#xff0c;即y轴上的数据 #width数组的宽度&#xff0c;默认值0.8 #*表示后面的参数为匿名关键字&#xff0c;必须传入参数 #kwargs关键字参数x[1,2,3,4,5] height[random.randint(10,100)f…

OpenAI Code Interpreter 的开源实现:GPT Code UI

本篇文章聊聊 OpenAI Code Interpreter 的一众开源实现方案中&#xff0c;获得较多支持者&#xff0c;但暂时还比较早期的项目&#xff1a;GPT Code UI。 写在前面 这篇文章本该更早的时候发布&#xff0c;但是 LLaMA2 发布后实在心痒难忍&#xff0c;于是就拖了一阵。结合 L…

Python函数

1.传递可更改对象与不可更改对象区别 Python的可更改类型包括&#xff1a;列表List、字典Dictionary、集合Set 当传递的参数是可更改类型时&#xff0c;这就相当于是C的引用传递&#xff0c;函数内部对参数进行更改&#xff0c;函数之外也会进行更改&#xff0c;因为操作的同一…

Jmeter 中 Beanshell 的使用

目录 前言&#xff1a; Beanshell 介绍 常用内置变量 log vars 和 props vars 常用方法&#xff1a; props 常用方法&#xff1a; prev 综合运用 前言&#xff1a; JMeter 是一个广泛使用的性能测试工具&#xff0c;它支持许多不同的测试技术和方法。其中&#xff0c…

6 | 中国天气网

文章目录 用Python爬取中国天气网的天气预报信息1. 获取HTML页面内容2. 解析HTML并提取数据3. 保存数据到CSV文件4. 主函数5. 爬虫脚本用Python爬取中国天气网的天气预报信息 在这篇博客中,我将会展示如何使用Python编程语言来从中国天气网爬取天气预报信息。这将涵盖如何获取…

Qt实现双控制柄的Slider

目标 实现带有左右两个控制柄的滑动条&#xff1b;控件可设定最小值和最大值&#xff1b;控件可设定控制柄的最小距离&#xff1b; 效果演示 思路 1. 标准的Slider控件只有一个Handle&#xff0c;所以想要通过改造QSlider来实现两个Handle是非常困难的&#xff0c;“自绘”…

Vue+Nodejs 使用WebSocket创建一个简易聊天室

文章目录 一、页面效果二、架构流程三、技术细节1.客户端2. 服务端 一、页面效果 二、架构流程 使用vue编写前端页面&#xff0c;nodejs处理服务端消息&#xff0c;WebSocket进行实时通信 三、技术细节 1.客户端 <template><div><form onsubmit"return…

【itext7】itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加表单控件&#xff08;单行文本框、多行文本框、单选框、复选框、下拉框、按钮&#xff09;。 目录 一、itext操作PDF表单 1.1、添加单行文本框 1.2、添加多行文本框 1.3、添加单选框 1.4、添加复选框 1.5、添加下拉框…

无涯教程-html()

html()方法获取第一个匹配元素的html内容。此属性在XML文档上不可用&#xff0c;但适用于XHTML文档。 html( ) - 语法 selector.html() html( ) - 示例 以下示例将获取第一段的HTML内容&#xff0c;并将其显示在第二段中。请同时检查 html(val)方法的描述。 <html>&…

WEB安全测试通常要考虑的测试点

1、问题&#xff1a;没有被验证的输入 测试方法&#xff1a; 数据类型&#xff08;字符串&#xff0c;整型&#xff0c;实数&#xff0c;等&#xff09; 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值&#xff08;枚举型&a…

MacBook安装Git三种方式

MacBook安装Git三种方式 git官方下载地址: https://git-scm.com/download 方式一(推荐) Git官网下载最新git Mac版本安装 下载地址: https://git-scm.com/download/mac Binary installer 二进制安装 下载 git-2.27.0-intel-universal-mavericks.dmg 点击安装 查看版本 git …

大语言模型

LLM通常基于Transformer架构构建&#xff0c;这类模型依赖于自注意力机制。Transformer能够高效利用计算资源&#xff0c;使得训练更大规模的语言模型成为可能。 例如&#xff0c;GPT-4包含数十亿个参数&#xff0c;在大规模数据集上训练&#xff0c;在其权重中有效编码了大量…

k8s使用helm部署Harbor镜像仓库并启用SSL

1、部署nfs存储工具 参照&#xff1a;https://zhaoll.blog.csdn.net/article/details/128155767 2、部署helm 有多种安装方式&#xff0c;根据自己的k8s版本选择合适的helm版本 参考&#xff1a;https://blog.csdn.net/qq_30614345/article/details/131669319 3、部署Harbo…

WPF实战学习笔记04-菜单导航

菜单导航 添加文件与文件夹 添加文件夹 ​ ./Extensions 添加文件&#xff3b;类型&#xff1a;用户控件&#xff3d; ./Views/IndexView.xaml ./Views/MemoView.xaml ./Views/TodoView.xaml ./Views/SettingsView.xaml ./ViewModels/IndexViewModel.cs ./ViewModels/IndexV…

0成本搭建自己的云数据库

第一步&#xff0c;租免费的云服务器 www.aliyun.com 阿里云的&#xff0c;可以免费租三个月 进入主页后选择云服务器ESC 选择这款&#xff0c;点击试用就行 第二步&#xff0c;配置服务器 在配置服务器系统的时候选择centos&#xff0c;省事&#xff0c;别选ubuntu&#x…

动手学深度学习——线性回归从零开始

生成数据集synthetic_data()读取数据集data_iter()初始化模型参数w, b定义模型&#xff1a;线性回归模型linreg()定义损失函数&#xff1a;均方损失squared_loss()定义优化算法&#xff1a;梯度下降sgd()进行训练&#xff1a;输出损失loss和估计误差 %matplotlib inline impor…

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

iOS pod EaseIMKit库如何放在本地使用

在使用环信EaseIMKit库的时候&#xff0c;发现有些开发者需要改动库中的一些逻辑&#xff0c;或者有UI上的一些调整&#xff0c;如果直接去改pods里面的库&#xff0c;在之后的库版本升级会把之前修改过的代码覆盖掉&#xff0c;这个时候我们就需要pod指向本地的库&#xff0c;…

KubeVela篇05:为kubevela开发terraform-mycloud Addon插件

通过前面的章节,我们已经学习了解terraform,并通过vpc资源例子,为私有云/混合云开发了terraform provider,这一节介绍如何将我们开发的mycloud terraform provider整合到kubevela控制平台上,以通过在application中声明一个kubevela组件的方式去申请基础设施资源。 我们需…