java单人聊天

 服务端

package 单人聊天;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class AServer extends JFrame implements ActionListener,Runnable {private int Port = 9999;private ServerSocket SS;private Socket socket;private JTextArea area = new JTextArea("聊天内容:"+'\n');private JTextField field = new JTextField("");public AServer(){this.setTitle("服务器");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(area,BorderLayout.CENTER);this.add(field,BorderLayout.NORTH);field.addActionListener(this);this.setSize(190, 200);this.setVisible(true);try{			SS = new ServerSocket(Port);socket = SS.accept();new Thread(this).start();}catch(Exception ex){		}		}public void run(){try{while(true){InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));String str = br.readLine();				area.append(str + '\n');			}			}catch(Exception ex){			}}public void actionPerformed(ActionEvent e){try{OutputStream os = socket.getOutputStream();PrintStream ps = new PrintStream(os);ps.println("服务器说:" + field.getText());field.setText("");}catch(Exception ex){	}}	public static void main(String[] args){new AServer();}
}

客户端

package 单人聊天;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class Aclient extends JFrame implements ActionListener, Runnable {private Socket socket1;private int Port1 = 9999;private InetAddress ip1;private JTextArea area1 = new JTextArea("聊天内容:\n");private JTextField field1 = new JTextField("");public Aclient(){this.setTitle("客户端");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(field1,BorderLayout.NORTH);field1.addActionListener(this);this.add(area1, BorderLayout.CENTER);		this.setSize(190, 200);this.setVisible(true);try{ip1 = InetAddress.getByName("Localhost");socket1 = new Socket(ip1,Port1);OutputStream os = socket1.getOutputStream();PrintStream ps = new PrintStream(os);ps.println("客户端连接");new Thread(this).start();	}catch (Exception ex){	}}public void run1(){try{while(true){InputStream is = socket1.getInputStream();BufferedReader bf = new BufferedReader(new InputStreamReader(is));String str = bf.readLine();area1.append(str + '\n');}}catch (Exception ex){	}}public void actionPerformed1(ActionEvent e){try{OutputStream os = socket1.getOutputStream();PrintStream ps = new PrintStream(os);ps.println("客户端说:" + field1.getText());field1.setText("");}catch (Exception ex){}}public static void main1(String[] args) {new Aclient();}private Socket socket;private int Port = 9999;private InetAddress ip;private JTextArea area = new JTextArea("聊天内容:\n");private JTextField field = new JTextField("");public void Aclient1(){this.setTitle("客户端");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(field1,BorderLayout.NORTH);field1.addActionListener(this);this.add(area1, BorderLayout.CENTER);		this.setSize(190, 200);this.setVisible(true);try{ip1 = InetAddress.getByName("Localhost");socket1 = new Socket(ip1,Port1);OutputStream os = socket1.getOutputStream();PrintStream ps = new PrintStream(os);ps.println("客户端连接");new Thread(this).start();	}catch (Exception ex){	}}public void run(){try{while(true){InputStream is = socket1.getInputStream();BufferedReader bf = new BufferedReader(new InputStreamReader(is));String str = bf.readLine();area1.append(str + '\n');}}catch (Exception ex){	}}public void actionPerformed(ActionEvent e){try{OutputStream os = socket1.getOutputStream();PrintStream ps = new PrintStream(os);ps.println("客户端说:" + field1.getText());field1.setText("");}catch (Exception ex){}}public static void main(String[] args) {new Aclient();}
}

服务端的窗口

 

客户端窗口

 

 

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

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

相关文章

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景: 最近需要使用Neo4j图数据库,因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像,执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…

洗鞋机行业分析:2023年市场发展前景及消费现状

随着消费主力的转移,年轻群体在消费中的话语权和影响力越来越大,“精致懒”正在成为潮流。洗鞋机作为消费升级时代的产物,自诞生以来,经过十几年的发展,逐渐被年轻消费者熟知,洗鞋机品牌阵营和产品种类也变…

任课老师和班主任的区别

任课老师和班主任都是学校中非常重要的角色,他们的工作性质和职责略有不同。作为一位老师,我来说说任课老师和班主任的区别。 任课老师的主要职责是教授学科知识,并负责解答学生在学习过程中遇到的问题。他们的工作涉及到备课、讲课、布置作业…

Qt之基于QMediaPlayer的音视频播放器(支持常见音视频格式)

Qt自带了一个Media Player的例子,如下图所示: 但是运行这个例子机会发现,连最基本的MP4格式视频都播放不了。因为QMediaPlayer是个壳(也可以叫框架),依赖本地解码器,视频这块默认基本上就播放个MP4,甚至连MP4都不能播放,如果要支持其他格式需要下载k-lite或者LAVFilte…

Java 并发编程面试题——Java 线程间通信方式

目录 1.✨Java 线程间有哪些通信方式?1.1.volatile 和 synchronized 关键字1.2.等待/通知机制1.2.1.概述1.2.2.经典范式 1.3.管道输入/输出流1.4.信号量 2.Thread.join() 有什么作用?它的使用场景是什么?3.Java 中需要主线程等待子线程执行完…

mac M系列芯片安装chatGLM3-6b模型

1 环境安装 1.1 mac安装conda. 下载miniconda,并安装 curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh sh Miniconda3-latest-MacOSX-arm64.sh1.2 创建虚拟环境并激活 创建名为chatglm3的虚拟环境,python版本为3.10…

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态: 按钮能够点击状态: 我采用的方式是监听手机号/邮箱输入框的输入事件,即实判断用户输入的数据是否满足规则,如果满足手机号/邮箱规则,则激活“获取验证码”按钮。 话不多说,上代码 样式…

IMR TBR TBDR

IMR Immediate Mode Rendering(即时渲染),是 PC 和主机 GPU 使用的渲染方式 IMR下的渲染示意图 每次渲染,都要读写Frame Buffer和Depth Buffer IMR优化 IMR需要大量的带宽和功耗,优化方式是L1、L2 Cache大缓存,不适用于移动G…

贪心算法及相关题目

贪心算法概念 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。 贪心算法性质(判断是否可以使用贪心算法) 1、贪…

微信小程序中生命周期钩子函数

微信小程序 App 的生命周期钩子函数有以下 7 个: onLaunch(options):当小程序初始化完成时,会触发 onLaunch(全局只触发一次)。onShow(options):当小程序启动或从后台进入前台显示时,会触发 on…

JenKins快速安装与使用,Gitlab自动触发Jenkins

一、JenKins 0.准备,配置好环境 1)Git(yum安装) 2)JDK(自行下载) 3)Jenkins(自行下载) 1.下载安装包 进官网,点Download下方即可下载。要下…

工业机器视觉megauging(向光有光)使用说明书(三,轻量级的visionpro)

下来我们说说第二个相机的添加: 第一步,点击相机二,如下: 第二步,点击:加载工具组.xml,加载toolgroupxml2目录下的:工具组.xml 注意,一个相机只能用一个toolgroupxml,第…

mockito加junit实现单元测试笔记

目录 一、简介1.1 单元测试的特点1.2 mock类框架使用场景1.3 常用mock类框架1.3.1 mockito1.3.2 easymock1.3.3 powermock1.3.4 JMockit 二、mockito的单独使用2.1 mock对象与spy对象2.2 初始化mock/spy对象的方式初始化mock/spy对象第1种方式初始化mock/spy对象第2种方式初始化…

2023下半年软考架构师-心态崩了

2023.11.06 考试心得:上午综合知识,面广,但考的不深,主要都是理论性的,计算题不多,只要平时准备一下,有30题可以不会,过的概率还是很大的。下午的案例,这个就会有深度了…

C++新经典模板与泛型编程:SFINAE替换失败并不是一个错误

替换失败并不是一个错误(SFINAE) SFINAE是一个英文简称,全称为Substitution Failure is not an Error,翻译成中文就是“替换失败并不是一个错误”。 SFINAE可以看作C语言的一种特性或模板设计中要遵循的一个重要原则,…

变电站工程师软件工具:Omicron IEDScout Crack

变电站工程师打软件 IEDScout 5.2.0 帮助您确保发电、输电和配电作业的安全可靠,IEDScout 是专为操作 IEC 61850 装置的保护和变电站自动化工程师打造的一款理想软件工具。它可以控制 IED(智能电子设备),并于使用过程中执行多种实…

从零开始,利用ChatGPT学会写作的完整指南

文章目录 前言了解ChatGPT访问OpenAI平台使用ChatGPT进行简单的对话定义写作主题逐步生成文章段落添加个性化和细节编辑和润色反复修改直至满意 图书推荐内容简介作者简介获取方式 前言 在数字时代,人工智能技术日益成熟,为我们提供了全新的学习和创作机…

软件测试外包干了2个月,技术进步2年。。。

先说一下自己的情况,本科生,18年通过校招进入北京某软件公司,干了接近2年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

Spatial Data Analysis(四):空间自相关示例

Spatial Data Analysis(四):空间自相关示例 空间自相关是地理信息科学(GIS)和空间统计学中的重要概念之一,用于研究地理空间上的数据变异性和相关性。空间自相关分析的目标是探讨地理空间中的现象是否呈现…

C //例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。

C程序设计 (第四版) 谭浩强 例10.4 例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法:使用指针,函数的模块…