栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

网络编程01:TCP上传文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

网络编程01:TCP上传文件

TCP上传文件
客户端负责上传文件,服务端负责接收文件

多看注释

客户端
  1. 客户端需要一个创建一个socket连接,用第地址和端口号
  2. 接着需要一个输出流,用来写文件
  3. 接着需要一个输出流,用来读取文件
  4. 然后通知服务器,我传输完毕
  5. 接着需要创建输入流和管道输出流来接收服务器反馈信息
  6. 释放资源
package Tcp上传文件;

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

public class TcpClientDemo02 {
    public static void main(String[] args) throws IOException {
        //1.创建一个Socket连接
        Socket socket = new Socket(InetAddress.getByName("localhost"), 9000);
        //2.创建一个输出流,用于写文件
        OutputStream os = socket.getOutputStream();
        //3.读取文件
        FileInputStream fis = new FileInputStream("15.jpg");
        //4.写出文件
        byte[] buffer =new byte[1024];
        int len;
        while ((len=fis.read(buffer))!=-1){
            os.write(buffer,0,len);
        }

        //5.通知服务器,我传输完毕
        socket.shutdownOutput();

        //6.接收服务器的确认消息
        InputStream inputStream = socket.getInputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer2 =new byte[1024];
        int len2;
        while ((len2=inputStream.read(buffer2))!=-1){
            baos.write(buffer2,0,len2);
        }
        System.out.println(baos.toString());
        //7.关闭资源
        baos.close();
        inputStream.close();
        fis.close();
        os.close();
        socket.close();


    }
}

服务端
  1. 需要创建服务端口
  2. 创建监听客户端连接,一直等待客户端的连接
  3. 创建输入流和接收文件,创建输出流,写文件
  4. 通知客户端,接收完毕
  5. 释放资源
package Tcp上传文件;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//接收文件
public class TcpServerDemo02 {
    public static void main(String[] args) throws IOException {
        //1.创建服务端口
        ServerSocket serverSocket = new ServerSocket(9000);
        //2.监听客户端的连接
        Socket socket = serverSocket.accept();//阻塞监听,会一直等待客户端连接
        //3.获取输入流
        InputStream is = socket.getInputStream();
        //4.文件输出
        FileOutputStream fos = new FileOutputStream(new File("receive.jpg"));
        byte[] buffer=new byte[1024];
        int len;
        while ((len=is.read(buffer))!=-1){
            fos.write(buffer,0,len);
        }

        //5.通知客户端,我接收完毕
        OutputStream os = socket.getOutputStream();
        os.write("客户端,我是服务器,我接收完毕了".getBytes());

        //5.关闭资源
        os.close();
        fos.close();
        is.close();
        socket.close();
        serverSocket.close();


    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号