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

TCP网络通信编程之字节流

目录

【TCP字节流编程】 // 网络编程中,一定是server端先运行

【案例1】

 【思路分析】

【客户端代码】

【服务端代码】

【结果展示】

【案例2】

【题目描述】

 【注意事项】

【服务端代码】

【客户端代码】

【代码结果】


【TCP字节流编程】 // 网络编程中,一定是server端先运行

【案例1】

 【思路分析】

【客户端代码】

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;/*** @ProjectName: Study* @FileName: SocketTCP01Client* @author:HWJ* @Data: 2023/7/17 16:41*/
public class SocketTCP01Client {public static void main(String[] args) throws IOException {// 连接本机的 9999端口,如果连接成功,返回Socket对象Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("连接成功...");// 连接上后,生成Socket对象,通过socket.getOutputStream 来写入数据OutputStream outputStream = socket.getOutputStream();outputStream.write("hello, server".getBytes());// 这里一定要关闭流对象和socket对象,否则会造成资源浪费。socket.close();outputStream.close();System.out.println("客户端退出...");}
}

【服务端代码】

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @ProjectName: Study* @FileName: SocketTCP01Server* @author:HWJ* @Data: 2023/7/17 16:18*/
public class SocketTCP01Server {public static void main(String[] args) throws IOException {// 监听本机端口9999,等待连接// 细节:要求在本机没有其他服务在监听9999端口ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务端,在9999端口监听,等待连接");// 当没有客户端连接9999端口时,程序会阻塞,等待连接// 如果有客户端连接,则会返回Socket对象,程序继续Socket socket = serverSocket.accept();// 通过socket.getInputStream() 读取客户端写入到数据通道的数据,显示InputStream inputStream = socket.getInputStream();// 读取数据int readLine = 0;byte[] bytes = new byte[1024];while ((readLine = inputStream.read(bytes)) != -1){System.out.println(new String(bytes, 0, readLine));}// 这里一定要关闭流对象和socket,serverSocket对象,否则会造成资源浪费。serverSocket.close();socket.close();inputStream.close();System.out.println("服务端退出...");}
}

【结果展示】

【案例2】

【题目描述】

 【注意事项】

1. 每次客户端和服务端之间发送一个东西后,一定要设置一个结束标记socket.shutdownOutput();

【服务端代码】

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @ProjectName: Study* @FileName: SocketTCP02Server* @author:HWJ* @Data: 2023/7/29 11:50*/
public class SocketTCP02Server {public static void main(String[] args) throws IOException {// 监听本机端口9999,等待连接// 细节:要求在本机没有其他服务在监听9999端口ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务端,在9999端口监听,等待连接");// 当没有客户端连接9999端口时,程序会阻塞,等待连接// 如果有客户端连接,则会返回Socket对象,程序继续Socket socket = serverSocket.accept();// 通过socket.getInputStream() 读取客户端写入到数据通道的数据,显示InputStream inputStream = socket.getInputStream();// 读取数据int readLine = 0;byte[] bytes = new byte[1024];while ((readLine = inputStream.read(bytes)) != -1){System.out.println(new String(bytes, 0, readLine));}// 发送给客户端OutputStream outputStream = socket.getOutputStream();outputStream.write("hello client".getBytes());socket.shutdownOutput(); // 设置结束标记// 这里一定要关闭流对象和socket,serverSocket对象,否则会造成资源浪费。serverSocket.close();socket.close();outputStream.close();inputStream.close();System.out.println("服务端退出...");}
}

【客户端代码】

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;/*** @ProjectName: Study* @FileName: SocketTCP02Client* @author:HWJ* @Data: 2023/7/29 11:50*/
public class SocketTCP02Client {public static void main(String[] args) throws IOException {// 连接本机的 9999端口,如果连接成功,返回Socket对象Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("连接成功...");// 连接上后,生成Socket对象,通过socket.getOutputStream 来写入数据OutputStream outputStream = socket.getOutputStream();outputStream.write("hello, server".getBytes());socket.shutdownOutput(); // 设置结束标记// 读取数据InputStream inputStream = socket.getInputStream();int readLine = 0;byte[] bytes = new byte[1024];while ((readLine = inputStream.read(bytes)) != -1){System.out.println(new String(bytes, 0, readLine));}// 这里一定要关闭流对象和socket对象,否则会造成资源浪费。socket.close();outputStream.close();inputStream.close();System.out.println("客户端退出...");}
}

【代码结果】

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

相关文章:

  • 【暑期每日一练】 day8
  • maven的基本学习
  • 疲劳驾驶检测和识别2:Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码)
  • 安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?
  • EXCEL数据自动web网页查询----高效工作,做个监工
  • visual studio 2022换背景遇到的问题
  • MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例
  • Go重写Redis中间件 - GO实现TCP服务器
  • 使用Kmeans算法完成聚类任务
  • 内网穿透技术 - 带你玩转NATAPP
  • SQL server 简介
  • springboot 之以enable开头的注解
  • #P1007. [NOIP2007提高组] 矩阵取数游戏
  • TypeScript基础篇 - TS模块
  • 安卓:Picasso——加载网络图片的库
  • 1468-PIPI的魔咒
  • 3d激光slam建图与定位(1)_基于ndt算法定位
  • 云安全攻防(二)之 云原生安全
  • 最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践
  • 笙默考试管理系统-MyExamTest(16)
  • 初级算法-树
  • Harbor Failed to start docker.service: Unit docker.service not found.
  • 网络安全/信息安全(黑客技术)自学笔记
  • ADB 命令结合 monkey 的简单使用,超详细
  • 级联选择框
  • 如何在3ds max中创建可用于真人场景的巨型机器人:第 5 部分
  • 【MATLAB第61期】基于MATLAB的GMM高斯混合模型回归数据预测
  • Mnist分类与气温预测任务
  • Pytorch深度学习-----神经网络的卷积操作
  • 微信小程序转抖音小程序的坑:The component <xxx> used in pages/xxx/xxx is undefined