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关闭表示 撤销连接
相关推荐
智联视频超融合平台1 小时前
慧港口新纪元:视频监控联网平台赋能高效安全运营
网络·网络协议·音视频·实时音视频·视频编解码
iRayCheung3 小时前
Docker安装的mysql限制ip访问
tcp/ip·mysql·docker
潘yi.4 小时前
web技术与nginx网站环境部署
服务器·网络·nginx
安顾里5 小时前
Linux命令-iostat
linux·运维·服务器
whoarethenext5 小时前
初始https附带c/c++源码使用curl库调用
服务器·c++·qt·https·curl
100编程朱老师5 小时前
面试:什么叫Linux多路复用 ?
linux·运维·服务器
群联云防护小杜5 小时前
云服务器主动防御策略与自动化防护(下)
运维·服务器·分布式·安全·自动化·音视频
Jtti5 小时前
Jtti:nginx服务器如何限制访问频率
服务器·网络·nginx
视觉&物联智能6 小时前
【杂谈】-人工智能驱动的网络安全威胁:新一代网络钓鱼
网络·人工智能·web安全·网络安全·安全威胁分析
struggle20256 小时前
LinuxAgent开源程序是一款智能运维助手,通过接入 DeepSeek API 实现对 Linux 终端的自然语言控制,帮助用户更高效地进行系统运维工作
linux·运维·服务器·人工智能·自动化·deepseek