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();
}
}
网友评论