需求:上传图片
客户端:
1、服务器端点;
2、读取客户端已有的图片数据;
3、通过socket输出流将数据发给服务端;
4、读取服务端反馈信息;
5、关闭资源。
import java.awt.Button; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class PictureClient { public static void main(String[] args) throws UnknownHostException, IOException { Socket socket=new Socket("10.1.9.34",10008); FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\picture\\1.jpg"); OutputStream out=socket.getOutputStream(); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1){ out.write(buf,0,len); } //告诉服务端数据已写完 socket.shutdownOutput(); InputStream in=socket.getInputStream(); byte[] bufIn=new byte[1024]; int num=in.read(bufIn); System.out.println(new String(bufIn,0,num)); fis.close(); socket.close(); } }
服务端:
import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class PictureServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket=new ServerSocket(10008); Socket socket=serverSocket.accept(); String ip=socket.getInetAddress().getHostAddress(); System.out.println(ip+"......connected"); InputStream in=socket.getInputStream(); FileOutputStream fos=new FileOutputStream("server.png"); byte[] buf=new byte[1024]; int len=0; while((len=in.read())!=-1){ fos.write(buf,0,len); } OutputStream out=socket.getOutputStream(); out.write("上传成功".getBytes()); fos.close(); socket.close(); serverSocket.close(); } }
可以看图片已从C盘上传到E盘