TCP协议实现文件上传

实现图片上传的方法和实现通信的方法类似,都是通过IO流来实现的

package Inetcode;
//客户端代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientDemo01 {
    public static void main(String[] args)throws IOException {
        //第一步:先拿到需要上传的图片
        FileInputStream fis = new FileInputStream("C:\\Users\\one\\Desktop\\图片集\\1.jpg");
        //第二步:实例化socket类,连接服务器
        Socket socket = new Socket("127.0.0.1",9010);
        //第三步:通过socket提供的getoutputstream方法与服务器建立io连接
        OutputStream os = socket.getOutputStream();
        //第四步:把图片通过io连接使用write方法上传
        os.write("准备上传".getBytes());
        byte[] buffer = new byte[1024];
        int len=0;
        while ((len=fis.read(buffer))!=-1){
            os.write(buffer,0,len);
        }
        //第五步:上传完成关闭Io连接,告诉服务器自己已经上传完毕
        socket.shutdownOutput();
       
        //第六步:接收服务器的返回信息
        InputStream is = socket.getInputStream();
        len=0;
        while((len=is.read(buffer))!=-1){
            System.out.println(new String(buffer,0,len));
        }
        //第七步:释放资源(关闭Io)
        socket.close();
        fis.close();
    }
}

package Inetcode;

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

public class ServerDemo01 {
    public static void main(String[] args) throws IOException {
        //第一步:向系统要一个用于通讯的端口号
        ServerSocket serverSocket = new ServerSocket(9010);
        //第二步:侦听客户端的连接消息
        Socket socket = serverSocket.accept();
        //第三步:运用io流获取客户端发送的图片
        InputStream is = socket.getInputStream();
        //第三步半:侦听客户端发来的消息
        int len1=is.read(buffer1);
        System.out.println(new String(buffer1,0,len1));
        //第四步:设置存放路径,先用File类创建一个图片存放路径
        File file = new File("F:\\图片夹");
        if(!file.exists()) {
            file.mkdirs();
        }
        //第五步:图片接收完成,使用字节输出流保存到指定位置
		FileOutputStream fos = new FileOutputStream("F:\\图片夹\\1.jpg");
        byte[]buffer = new byte[1024];
        int len = 0;
        while ((len=is.read(buffer))!=-1){
            fos.write(buffer,0,len);
        }
        //第六步:给客户端发送返回消息,告诉它执行结果
        socket.getOutputStream().write("上传成功".getBytes());
        //第七步:释放资源关闭流
        is.close();
        socket.close();
    }
}
posted @   萧何i  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示