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关闭表示 撤销连接
相关推荐
Xの哲學1 天前
Linux Tasklet 深度剖析: 从设计思想到底层实现
linux·网络·算法·架构·边缘计算
dog2501 天前
Linux 6.19 TCP 的两个极限拉扯
linux·运维·tcp/ip
idcardwang1 天前
esp32s3-idf使用smart_config一键配网
网络
小周学学学1 天前
ESXI故障处理-重启后数据存储丢失
linux·运维·服务器
googleccsdn1 天前
ENSP Pro Lab笔记:配置BGP EVPN VXLAN双栈(2)
网络·笔记·网络协议
min1811234561 天前
HR人力资源招聘配置流程图制作教程
大数据·网络·人工智能·架构·流程图·求职招聘
小宇的天下1 天前
Calibre 3Dstack --每日一个命令day13【enclosure】(3-13)
服务器·前端·数据库
云和数据.ChenGuang1 天前
达梦数据库安装服务故障四
linux·服务器·数据库·达梦数据库·达梦数据
weixin_516023071 天前
ssh配合密钥连接
服务器·网络·ssh
tobias.b1 天前
408真题解析-2009-36-网络-交换机转发机制
网络·智能路由器·408考研·408真题解析