使用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. 深度学习 英文 训练阶段_半监督深度学习训练和实现小Tricks
  2. C语言初学者代码中的常见错误与瑕疵(9)
  3. centos下phpmyadmin的安装配置
  4. 疫情撬动游戏产业“底层认知”,正向价值愈发突显
  5. android 异步刷新 方法,android应用中实现异步更新UI的方法有哪些
  6. 怎样转换不同的pdf文件
  7. spring-注入array集合
  8. socket网络编程python_python之路8:Socket网络编程
  9. Linux unit14
  10. GB28181系统设计(三)-进程通信让python获取共享内存数据
  11. angularjs中使用ng-repeat渲染最后一个li的时候设置不同样式
  12. UITextView模拟UITextField 设置Placeholder属性 --董鑫
  13. windows中PLSQL/Developer、Oracle InstantClient的安装与配置
  14. ajax=1,ajax专栏1
  15. 【java集合框架源码剖析系列】java源码剖析之HashMap
  16. 下载安装ARM交叉编译器
  17. ELK日志分析系统理论加实操演练!!
  18. 文本数据挖掘实验:文本分类
  19. 多服务台排队系统仿真基于c语言,带优先级的多服务台排队系统Monte Carlo模拟
  20. mysql 8.0 配置文件my.cnf中文注解

热门文章

  1. 网络安全领域的“铁腕”硬汉,郭盛华是怎么炼成的?
  2. win10键盘打不出字怎么解决[系统天地]
  3. 达芬奇密码 第六章(3)
  4. PTA 7-5 彩虹瓶
  5. 经济泡沫和泡沫经济的区别_投资绿色技术:绿色黄金还是绿色泡沫?
  6. 计算机毕业设计Java物流站环境监测系统(源码+系统+mysql数据库+Lw文档)
  7. 2009年最新版海南三亚自助游攻略(超实用)
  8. 斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)
  9. cpu(了解了以下8条,没人敢和你忽悠CPU)
  10. 江西现代职业技术学院单招计算机,江西现代职业技术学院2019年单招录取分数线...