实现聊天对话室(多人聊天)
使用ServerSocket和Socket实现服务器端和客户端的Socket通信。
了解完socket通信步骤后可以发现本实验需要写两个类:Server和Client,并且要先运行Server再运行Client。
先构造服务器端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;/*** @author: Ren* @date: 2020-08-03 15:23* @description:*/
public class TcpserverC2 {public static void main(String[] args) throws IOException {// 定义多线程,让多个用户都可以参与到聊天室ExecutorService pool = new ScheduledThreadPoolExecutor(10);
// 绑定端口ServerSocket serverSocket = new ServerSocket(8888);
// 利用循环一直来读取新的socketwhile (true) {// 开始serversocket侦听请求,这方法会阻塞等待tcp请求的到来,一旦到来,就返回Socket accept = serverSocket.accept();pool.execute(new Runnable() {Socket socket = accept;
// 定义字节数组来读取输入流byte[] buf = new byte[1024];@Overridepublic void run() {// 定义输入输出流InputStream in = null;OutputStream out = null;try {in = socket.getInputStream();out = socket.getOutputStream();while (true) {int len = in.read(buf);System.out.println("服务器收到:" + new String(buf, 0, len, ("utf-8")));// 聊天室服务端一般不会参与对话,所以一般不加这个功能
// String xitongshuohua = scanner.nextLine();
// out.write("谢谢".getBytes(Charset.forName("utf-8")));out.write("谢谢".getBytes(("utf-8")));}} catch (IOException e) {e.printStackTrace();}}});}}
}
再构建客户端`
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;/*** @author: Ren* @date: 2020-08-03 15:23* @description:*/
public class TcpClientC2 {public static void main(String[] args) throws IOException {// 目标地址,目标端口Socket socket = new Socket("127.0.0.1",8888);InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();Scanner scanner = new Scanner(System.in);byte[] buf = new byte[1024];while (true) {String word = scanner.nextLine();out.write(word.getBytes(("utf-8")));int lrn = in.read(buf);System.out.println("服务端回复:"+new String(buf,0,lrn,("utf-8")));}}
}
服务器端构建在一个主机上,然后在多台电脑创建客户端,并访问服务器端所在的主机就可以构成聊天室的效果,当然前提是在同一个局域网下。
实现聊天对话室(多人聊天)相关推荐
- 网络编程基础_5.3聊天室-多人聊天室
聊天室-多人聊天室 #include <stdio.h>// 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #prag ...
- 用c语言编写一个1V1聊天程序,socket多人聊天程序C语言版(二)
1V1实现了,1V多也就容易了.不过相对于1V1的程序,我经过大改,采用链表来动态管理.这样效率真的提升不少,至少CPU使用率稳稳的在20以下,不会飙到100了.用C语言写这个还是挺费时间的,因为什么 ...
- java单人多人聊天_java简单多人聊天
服务器端代码: package chat; import java.io.DataInputStream; import java.io.DataOutputStream; import java.i ...
- 网络编程项目—— 多人聊天室->双人聊天
一.Coding前的思考和步骤梳理 1. 又开始思考这个问题,拿到一个需求,是调用java底层的代码写1000行实现,还是直接调第三方库写50行实现? 都一样. 发现第一次写shell的时候其实思考过 ...
- 计算机网络第一次实验 多人聊天
计算机网络第一次实验:提高要求:多人聊天 要求 设计一个多人聊天协议,要求实现选择不同的用户进行分组聊天. 设计多人聊天程序. 在Windows系统下,利用C/C++中的流式Socket对设计的程序进 ...
- 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍
高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI 全端覆盖!苹果手机端.安卓手机端.网页版.电脑PC版.无论哪个平台,都能畅通无阻! 性价比高!功能全面而价格低廉! ...
- 基于socket编程的多人聊天室
效果图: server.c 1 /* 服务器端 server.c */ 2 #include <glib.h> 3 #include <stdio.h> 4 #inc ...
- TCP创建多人聊天室
群聊-聊天室 群聊:任何时候,任何一个客户端都可以向其它客户端发送和接受数据,服务器只起到转发的作用. 1.首先创建一个聊天室的简易版(版本1). 需求:可以多个用户同时访问服务端,并且可以不断各自请 ...
- SpringBoot WebSocket之多人聊天室实现
SpringBoot WebSocket之多人聊天室实现 WebSocket简介 什么是WebSocket? 为什么使用WebSocket? WebSocket的技术特点: WebSocket的技术优 ...
最新文章
- IPC介绍——10个ipcs例子
- OpenStack自动发现计算节点
- 解惑图数据库!你知道什么是图数据库吗?
- Docker(二)-在Docker中部署Nginx实现负载均衡(视频)
- 7. vue-cli 安装和使用脚手架
- 数字信号处理实验(六)——FIR滤波器的设计
- 学生信息管理系统源码
- 小子注入,怎么使用呢?
- win10 安装IIS
- MATLAB系统辨识
- web前端开发技术(第3版)储久良著课后实验
- 根据数据生成excel、二维码并压缩zip并下载
- 2021年中国MEMS话筒市场趋势报告、技术动态创新及2027年市场预测
- php-fpm的安装和启动
- 2022年危险化学品经营单位安全管理人员考试练习题及模拟考试
- FBReader接入
- 10种方法缓解所显示器造成的眼睛疲劳
- vue + web 前端访问后端,跨域问题解决方案
- How the System Finds and Loads Drivers
- 给你一台服务器,你能把你写的代码部署到线上吗?