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关闭表示 撤销连接
相关推荐
Clownseven12 分钟前
Linux服务器健康检查Shell脚本:一键生成自动化巡检报告
linux·服务器·自动化
派拉软件1 小时前
微软AD国产化替换倒计时——不是选择题,而是生存题
网络·安全·microsoft·目录管理·微软ad替换·身份与访问控制管理iam
mysla1 小时前
嵌入式学习day34-网络-tcp/udp
服务器·网络·学习
成富1 小时前
MCP 传输方式,stdio、HTTP SSE 和 Streamable HTTP
网络·网络协议·http
扶尔魔ocy2 小时前
【QT入门到晋级】进程间通信(IPC)-socket(包含性能优化案例)
网络
卓码软件测评2 小时前
软件测试:如何利用Burp Suite进行高效WEB安全测试
网络·安全·web安全·可用性测试·安全性测试
明天见~~2 小时前
Linux下的网络编程
linux·运维·网络
NEXU53 小时前
Linux:网络层IP协议
linux·网络·tcp/ip
Aczone283 小时前
Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
linux·网络·网络协议·tcp/ip·http·c#
终端行者3 小时前
jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
服务器·分布式·jenkins