1.客户端代码
public class UploadPicClient {
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
//1,创建客户端socket
Socket s = new Socket("localhost",10088);
//2,读取客户端要上传的图片文件
FileInputStream fis = new FileInputStream("D:\\workspace\\day2019.1.17\\lanjing.jpg");
//3,获取Socket输出流,将读到的图片的数据发送到服务端
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1021];
int len =0;
while((len=fis.read(buf))!=-1){
out.write(buf,0,len);
}
//告诉服务端说:这边的数据发送完毕让服务端停止读取
s.shutdownOutput();
//读取服务端发回的内容
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int lenIn = in.read(buf);
String text = new String (buf,0,lenIn);
System.out.println(text);
//关闭资源
fis.close();
s.close();
}
}
2,服务端代码
public class UploadPicSever {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建tcp的socket服务端
ServerSocket ss = new ServerSocket(10088);
//获取客户端
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");
//读取客户端发来的数据
InputStream in = s.getInputStream();
//将读取到的数据存储到一个文件中。
File dir = new File("D:\\workspace\\day2019.1.17");
if(!dir.exists()){
dir.mkdirs();
}
File file = new File(dir,"blue.jpg");
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len=in.read(buf))!=-1){
fos.write(buf,0,len);
}
//获取socket输出流,将上传成功字样发送给客户端
OutputStream out = s.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
s.close();
ss.close();
}
}
上传后和上传前的图片: