TCP通信 -- 文件传输

www

客户端:

java 复制代码
package com.itheima.b03TCPTest3;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    public static void main(String[] args) throws IOException {
        System.out.println("===客户端启动===");
        //1、创建socket通信管道 请求连接
        Socket socket = new Socket(InetAddress.getLocalHost(),10001);
        //2、本地IO流将数据输入到内存 使用缓冲流 快
        FileInputStream fis = new FileInputStream("/Users/wangjia/Desktop/CS/计算机网络/clientdir/面试算法.png");
        BufferedInputStream bfr = new BufferedInputStream(fis);
        //3、网络IO流将数据从内存传到网络服务端 字节流输出 所以要通过字节数组按照字节大小逐一传输
        OutputStream os = socket.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(os);
        int len;
        byte[] bytes = new byte[1024];
        while((len = bfr.read(bytes)) != -1){
            bos.write(bytes,0,len);
        }
        //4、客户端通知服务器数据传输完毕 通过socket通信管道方法
        socket.shutdownOutput();

        //5、获取服务端反馈
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String msg = br.readLine();
        System.out.println("服务端反馈信息:" + msg);

        //6、释放资源
        socket.close(); //socket关闭表示 撤销连接

服务端

java 复制代码
package com.itheima.b03TCPTest3;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    public static void main(String[] args) throws IOException {
        System.out.println("===客户端启动===");
        //1、创建socket通信管道 请求连接
        Socket socket = new Socket(InetAddress.getLocalHost(),10001);
        //2、本地IO流将数据输入到内存 使用缓冲流 快
        FileInputStream fis = new FileInputStream("/Users/wangjia/Desktop/CS/计算机网络/clientdir/面试算法.png");
        BufferedInputStream bfr = new BufferedInputStream(fis);
        //3、网络IO流将数据从内存传到网络服务端 字节流输出 所以要通过字节数组按照字节大小逐一传输
        OutputStream os = socket.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(os);
        int len;
        byte[] bytes = new byte[1024];
        while((len = bfr.read(bytes)) != -1){
            bos.write(bytes,0,len);
        }
        //4、客户端通知服务器数据传输完毕 通过socket通信管道方法
        socket.shutdownOutput();

        //5、获取服务端反馈
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String msg = br.readLine();
        System.out.println("服务端反馈信息:" + msg);

        //6、释放资源
        socket.close(); //socket关闭表示 撤销连接
相关推荐
实点科技16 分钟前
实点科技IO-Link I/O IOL7A/B系列参数配置方法介绍
网络
梦帮科技1 小时前
LoRA / QLoRA 低秩矩阵流形更新:SVD 分解、秩与缩放因子 α 的物理意义与梯度稳定性保障
网络·深度学习·神经网络·线性代数·矩阵·架构·数据挖掘
阿钱真强道2 小时前
28 嵌入式操作系统 | 网关加 TCP 命令通道:粘包/半包怎么切
网络·网络协议·tcp/ip·粘包
HY小宝F2 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 03 · 网络基础:建立“包“的思维 —— 学习总结
网络·学习
ayaya_mana2 小时前
MCTier 组网联机工具:安装、配置与私有化部署
网络·windows·内网穿透·联机
故七月2 小时前
GEO 信源评估体系:如何判断一条网页信源能否被大模型采信
前端·网络·人工智能
hasty2 小时前
一次 WebSocket 握手为何能终止进程?Undici CVE-2026-19534 的异常边界
网络·websocket·网络协议
C++ 老炮儿的技术栈2 小时前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
实点科技3 小时前
XB6S-EI2002如何与信捷XDH-60T4-E实现EtherNet/IP通讯?
网络
仍然.3 小时前
RabbitMQ---可靠性传输
网络·分布式·rabbitmq