美文网首页
TCP上传图片UploadPicClient

TCP上传图片UploadPicClient

作者: 勇者与王者 | 来源:发表于2019-10-07 01:23 被阅读0次
package Day32_Net;

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

/**
 * @Author quzheng
 * @Date 2019/10/6 22:35
 * @Version 1.0
 *
 * 实现图片上传服务器功能:
 *  读取本地图片文件,通过socket对象获取输出流上传至服务器
 */
public class UploadPicClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",9999);

        //客户端的输出流 也就是指上传到服务器的流
        OutputStream out = socket.getOutputStream();

        String file = "C:\\Users\\QZ\\Desktop\\Java\\File\\WatchDogs2.png";

        FileInputStream fis = new FileInputStream(file);

        byte [] bytes = new byte[1024];
        //定义整数表示读取的字节长度
        int len = 0;
        //依次读取 1024个字节,并通过socket输出流 往服务器端写字节
        while ( (len=fis.read(bytes))!= -1 ){
            // 因为最后读取到的不一定有1024个字节长度,所以需要读取到多少 len长度 就写多少长度的自己
            out.write(bytes,0,len);
        }

        //这里因为输入流未关闭,导致服务器一直在等待输入流,卡死在这一步,所以尝试关闭输入流看下
//        fis.close();      没用
        // 调用socket的 shutdownOutput()方法 发送终止序列
        socket.shutdownOutput();

        //获取socket对象的输入流 即 获取到 服务器端的输出
        InputStream in = socket.getInputStream();
        len = in.read(bytes);
        //直接打印服务器端的消息
        System.out.println(new String(bytes,0,len) ); // getBytes()方法获取到的是内存地址?

        fis.close();
        socket.close();

    }
}

相关文章

网友评论

      本文标题:TCP上传图片UploadPicClient

      本文链接:https://www.haomeiwen.com/subject/dwmppctx.html