使用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")));}}
}

服务器端构建在一个主机上,然后在多台电脑创建客户端,并访问服务器端所在的主机就可以构成聊天室的效果,当然前提是在同一个局域网下。

实现聊天对话室(多人聊天)相关推荐

  1. 网络编程基础_5.3聊天室-多人聊天室

    聊天室-多人聊天室 #include <stdio.h>// 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #prag ...

  2. 用c语言编写一个1V1聊天程序,socket多人聊天程序C语言版(二)

    1V1实现了,1V多也就容易了.不过相对于1V1的程序,我经过大改,采用链表来动态管理.这样效率真的提升不少,至少CPU使用率稳稳的在20以下,不会飙到100了.用C语言写这个还是挺费时间的,因为什么 ...

  3. java单人多人聊天_java简单多人聊天

    服务器端代码: package chat; import java.io.DataInputStream; import java.io.DataOutputStream; import java.i ...

  4. 网络编程项目—— 多人聊天室->双人聊天

    一.Coding前的思考和步骤梳理 1. 又开始思考这个问题,拿到一个需求,是调用java底层的代码写1000行实现,还是直接调第三方库写50行实现? 都一样. 发现第一次写shell的时候其实思考过 ...

  5. 计算机网络第一次实验 多人聊天

    计算机网络第一次实验:提高要求:多人聊天 要求 设计一个多人聊天协议,要求实现选择不同的用户进行分组聊天. 设计多人聊天程序. 在Windows系统下,利用C/C++中的流式Socket对设计的程序进 ...

  6. 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍

    高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI 全端覆盖!苹果手机端.安卓手机端.网页版.电脑PC版.无论哪个平台,都能畅通无阻! 性价比高!功能全面而价格低廉! ...

  7. 基于socket编程的多人聊天室

    效果图:      server.c 1 /* 服务器端 server.c */ 2 #include <glib.h> 3 #include <stdio.h> 4 #inc ...

  8. TCP创建多人聊天室

    群聊-聊天室 群聊:任何时候,任何一个客户端都可以向其它客户端发送和接受数据,服务器只起到转发的作用. 1.首先创建一个聊天室的简易版(版本1). 需求:可以多个用户同时访问服务端,并且可以不断各自请 ...

  9. SpringBoot WebSocket之多人聊天室实现

    SpringBoot WebSocket之多人聊天室实现 WebSocket简介 什么是WebSocket? 为什么使用WebSocket? WebSocket的技术特点: WebSocket的技术优 ...

最新文章

  1. IPC介绍——10个ipcs例子
  2. OpenStack自动发现计算节点
  3. 解惑图数据库!你知道什么是图数据库吗?
  4. Docker(二)-在Docker中部署Nginx实现负载均衡(视频)
  5. 7. vue-cli 安装和使用脚手架
  6. 数字信号处理实验(六)——FIR滤波器的设计
  7. 学生信息管理系统源码
  8. 小子注入,怎么使用呢?
  9. win10 安装IIS
  10. MATLAB系统辨识
  11. web前端开发技术(第3版)储久良著课后实验
  12. 根据数据生成excel、二维码并压缩zip并下载
  13. 2021年中国MEMS话筒市场趋势报告、技术动态创新及2027年市场预测
  14. php-fpm的安装和启动
  15. 2022年危险化学品经营单位安全管理人员考试练习题及模拟考试
  16. FBReader接入
  17. 10种方法缓解所显示器造成的眼睛疲劳
  18. vue + web 前端访问后端,跨域问题解决方案
  19. How the System Finds and Loads Drivers
  20. 给你一台服务器,你能把你写的代码部署到线上吗?

热门文章

  1. X射线掠入射聚焦反射镜
  2. C++Primer第五版——习题答案详解
  3. 企业员工福利积分商城系统:深耕福利场景,解锁福利采购新玩法!
  4. PATH齐聚世界人工智能大会,近距离看懂平安的“城市折叠”
  5. 邮箱foxmail 如何添加账户
  6. KeePass密码管理软件 ---下载安装及汉化
  7. 【双周赛】第74场双周赛
  8. ADA语言Hello World
  9. xamarin 加载图片
  10. 心胸有多大,成就有多大