Java TCP使用Socket进行网络图片传送

本文演示,使用Socket进行网络图片传送,实现客户端的client.bmp文件上传到服务端。

1)客户端,上传client.bmp图片给服务端,并接受服务端返回的“上传成功”消息。

2)服务端,接受客户端的图片并保存为server.bmp,同时给客户端发送“上传成功”消息。

 

客户端,代码如下:

 

 
  1. package upload.photo.client;

  2.  
  3. import java.io.FileInputStream;

  4. import java.io.InputStream;

  5. import java.io.OutputStream;

  6. import java.net.Socket;

  7. //客户端:上传图片

  8. public class CUploadPhotoClient {

  9.  
  10. public static void main(String[] args) throws Exception{

  11. //1.连接诶服务器

  12. Socket s = new Socket("127.0.0.1",5612);

  13. System.out.println("已连接到服务器5612端口,准备传送图片...");

  14. //获取图片字节流

  15. FileInputStream fis = new FileInputStream("client.bmp");

  16. //获取输出流

  17. OutputStream out = s.getOutputStream();

  18. byte[] buf = new byte[1024];

  19. int len = 0;

  20. //2.往输出流里面投放数据

  21. while ((len = fis.read(buf)) != -1)

  22. {

  23. out.write(buf,0,len);

  24. }

  25. //通知服务端,数据发送完毕

  26. s.shutdownOutput();

  27. //3.获取输出流,接受服务器传送过来的消息“上传成功”

  28. InputStream in = s.getInputStream();

  29. byte[] bufIn = new byte[1024];

  30. int num = in.read(bufIn);

  31. System.out.println(new String(bufIn,0,num));

  32. //关闭资源

  33. fis.close();

  34. out.close();

  35. in.close();

  36. s.close();

  37. }

  38. }

 

服务端,代码如下:

 

 
  1. package upload.photo.server;

  2.  
  3. import java.io.FileOutputStream;

  4. import java.io.InputStream;

  5. import java.io.OutputStream;

  6. import java.net.ServerSocket;

  7. import java.net.Socket;

  8.  
  9. public class CUploadPhotoServer {

  10.  
  11. public static void main(String[] args) throws Exception{

  12. //1.服务器开始监听5612端口

  13. ServerSocket ss = new ServerSocket(5612);

  14. System.out.println("服务端已启动,正在监听5612端口...");

  15. //等待客户端

  16. Socket s = ss.accept();

  17. System.out.println("检测到客户端,准备数据接收...");

  18. //客户端已连接,获取输入流

  19. InputStream in = s.getInputStream();

  20. //创建图片字节流

  21. FileOutputStream fos = new FileOutputStream("server.bmp");

  22. byte[] buf = new byte[1024];

  23. int len = 0;

  24. //往字节流里写图片数据

  25. while ((len = in.read(buf)) != -1)

  26. {

  27. fos.write(buf,0,len);

  28. }

  29. //获取输出流,准备给客户端发送消息

  30. OutputStream out = s.getOutputStream();

  31. out.write("上传成功".getBytes());

  32. //关闭资源

  33. fos.close();

  34. in.close();

  35. out.close();

  36. s.close();

  37. ss.close();

  38. }

  39.  
  40. }

 

有不明白的地方,可以阅读《Java TCP使用Socket进行网络文件传送(5)》一文。

运行效果显示:

 

1)启动服务端

Java TCP使用Socket进行网络图片传送

2)启动客户端

Java TCP使用Socket进行网络图片传送

3)服务端显示结果

Java TCP使用Socket进行网络图片传送

4)客户端图片储存位置

Java TCP使用Socket进行网络图片传送

5)服务端储存图片位置

Java TCP使用Socket进行网络图片传送