实现聊天对话室(多人聊天)
使用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的技术优 ...
最新文章
- 深度学习 英文 训练阶段_半监督深度学习训练和实现小Tricks
- C语言初学者代码中的常见错误与瑕疵(9)
- centos下phpmyadmin的安装配置
- 疫情撬动游戏产业“底层认知”,正向价值愈发突显
- android 异步刷新 方法,android应用中实现异步更新UI的方法有哪些
- 怎样转换不同的pdf文件
- spring-注入array集合
- socket网络编程python_python之路8:Socket网络编程
- Linux unit14
- GB28181系统设计(三)-进程通信让python获取共享内存数据
- angularjs中使用ng-repeat渲染最后一个li的时候设置不同样式
- UITextView模拟UITextField 设置Placeholder属性 --董鑫
- windows中PLSQL/Developer、Oracle InstantClient的安装与配置
- ajax=1,ajax专栏1
- 【java集合框架源码剖析系列】java源码剖析之HashMap
- 下载安装ARM交叉编译器
- ELK日志分析系统理论加实操演练!!
- 文本数据挖掘实验:文本分类
- 多服务台排队系统仿真基于c语言,带优先级的多服务台排队系统Monte Carlo模拟
- mysql 8.0 配置文件my.cnf中文注解
热门文章
- 网络安全领域的“铁腕”硬汉,郭盛华是怎么炼成的?
- win10键盘打不出字怎么解决[系统天地]
- 达芬奇密码 第六章(3)
- PTA 7-5 彩虹瓶
- 经济泡沫和泡沫经济的区别_投资绿色技术:绿色黄金还是绿色泡沫?
- 计算机毕业设计Java物流站环境监测系统(源码+系统+mysql数据库+Lw文档)
- 2009年最新版海南三亚自助游攻略(超实用)
- 斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)
- cpu(了解了以下8条,没人敢和你忽悠CPU)
- 江西现代职业技术学院单招计算机,江西现代职业技术学院2019年单招录取分数线...