思路
1.建立服务,指定连接IP地址和端口。
2.获取客户端已有的图片数据。
3.通过Socket输出流将数据发送给服务端。
4.服务端获取客户端发送过来的图片数据,重命名后存储到服务端本地路径下,并返回"上传成功"给客户端。
5.客户端获取服务端反馈的上传结果信息,并打印在控制台上。
6.结束,关闭资源。
编码
import java.net.*;
import java.io.*;
class PicClient{ // 客户端
public static void main(String[] args)throws Exception{
Socket s=new Socket("192.168.0.111",10007);
// 源 本地图片
FileInputStream fis=new FileInputStream("IU.png");
// 目的
OutputStream out=s.getOutputStream();
byte[] buf=new byte[1024];
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 num=in.read(bufIn);
System.out.println(new String(bufIn,0,num));
// 关闭资源
fis.close();
s.close();
}
}
class PicServer{ // 服务端
public static void main(String[] args)throws Exception{
ServerSocket ss=new ServerSocket(10007);
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+" is connected");
// 源
InputStream in=s.getInputStream();
// 目的 写入到本地文件中
FileOutputStream fos=new FileOutputStream("server.png");
byte[] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1){
fos.write(buf,0,len);
}
// 返回客户端上传结果
OutputStream out=s.getOutputStream();
out.write("上传成功!".getBytes());
// 关闭资源
fos.close();
s.close();
ss.close();
}
}