当前位置: 首页 > news >正文

基于TCP实现聊天

TCP客户端代码

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;public class TcpClientDemo01 {public static void main(String[] args) {Socket socket = null;OutputStream os = null;InputStream is = null;BufferedReader reader = null;try {// 1. 要知道服务器的地址、端口号InetAddress serverIP = InetAddress.getByName("127.0.0.1");int port = 9999;// 2. 创建一个Socket连接socket = new Socket(serverIP, port);// 3. 创建输出流,用于发送消息给服务器os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os, true);// 4. 创建输入流,用于接收服务器的消息is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));// 5. 客户端输入消息reader = new BufferedReader(new InputStreamReader(System.in));String clientMessage;String serverResponse;while (true) {// 读取客户端输入的消息System.out.print("客户端: ");clientMessage = reader.readLine();// 发送消息到服务器pw.println(clientMessage);// 接收服务器返回的消息serverResponse = br.readLine();System.out.println("服务器: " + serverResponse);// 判断是否退出if ("bye".equalsIgnoreCase(clientMessage)) {break;}}} catch (Exception e) {e.printStackTrace();} finally {// 关闭资源try {if (reader != null) reader.close();if (is != null) is.close();if (os != null) os.close();if (socket != null) socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

TCP服务器代码

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class TcpServerDemo01 {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;InputStream is = null;OutputStream os = null;BufferedReader br = null;try {// 1. 创建一个服务器端的Socket,绑定端口9999serverSocket = new ServerSocket(9999);// 2. 等待客户端连接System.out.println("服务器等待连接...");socket = serverSocket.accept();System.out.println("客户端已连接!");// 3. 获取客户端发送的消息is = socket.getInputStream();br = new BufferedReader(new InputStreamReader(is));// 4. 创建输出流,发送消息给客户端os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os, true);String clientMessage;String serverMessage;while (true) {// 读取客户端发送的消息clientMessage = br.readLine();System.out.println("客户端: " + clientMessage);// 判断是否退出if ("bye".equalsIgnoreCase(clientMessage)) {pw.println("再见!");break;}// 服务器回复消息BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("服务器: ");serverMessage = reader.readLine();// 发送回复给客户端pw.println(serverMessage);}} catch (Exception e) {e.printStackTrace();} finally {// 关闭资源try {if (br != null) br.close();if (is != null) is.close();if (os != null) os.close();if (socket != null) socket.close();if (serverSocket != null) serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}
}

http://www.lryc.cn/news/443191.html

相关文章:

  • 基于JavaSwing实现的酒店管理系统
  • 网络基础,协议,OSI分层,TCP/IP模型
  • CefSharp_Vue交互(Element UI)_WinFormWeb应用---设置应用透明度(含示例代码)
  • 【OSS安全最佳实践】降低因账号密码泄露带来的未授权访问风险
  • 视频存储EasyCVR视频监控汇聚管理平台设备录像下载报错404是什么原因?
  • 在Spring项目中,两个实用的工具(生成类与映射文件、API自动生成)
  • C#基础(16)实践:学生成绩管理系统
  • git常用命令(patch补丁和解决冲突)
  • 数模方法论-整数规划
  • 【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`
  • 2024年华为杯-研赛F题论文问题一二讲解+代码分享
  • 代码随想录训练营第34天|dp前置转移
  • 乐观锁、悲观锁
  • Java客户端SpringDataRedis(RedisTemplate使用)
  • wsl2桥接网络 ubuntu到弃坑到又跳坑
  • WIFI路由器的套杆天线简谈
  • 希尔排序(C语言实现)
  • LLVM 中的Value、User、Use设计
  • C++智能指针入门教程(C++11)
  • 常用工具推荐!分享7款AI论文修改软件工具网站
  • 怎么解除BitLocker对磁盘的加密?
  • 群晖使用Docker部署WPS Office并实现异地使用浏览器制作办公文档
  • Unity3d 以鼠标位置点为中心缩放视角(正交模式下)
  • Git清除某文件所有历史提交记录
  • jacoco生成单元测试覆盖率报告
  • 【CSS Tricks】如何做一个粒子效果的logo
  • 如何使用ssm实现基于Javaweb的网上花店系统的设计与实现
  • Elastic 的 OpenTelemetry PHP 发行版简介
  • TCP 和 UDP 协议的区别?
  • 【PHP】使用thinkphp5查询最大值时,把varchar类型字段转换成数字