经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
026.5 网络编程 上传图片
来源:cnblogs  作者:_nbloser  时间:2018/10/18 9:07:26  对本文有异议

#######################################
客户端

  1. ###UploadPicClient.java
  2. public class UploadPicClient {
  3. /**
  4. * @param args
  5. * @throws IOException
  6. * @throws
  7. */
  8. public static void main(String[] args) throws IOException {
  9. System.out.println("上传图片客户端运行......");
  10. //1,创建socket。
  11. Socket s = new Socket("192.168.1.223", 10007);
  12. //2,读取源图片。
  13. File picFile = new File("tempfile\\1.jpg");
  14. FileInputStream fis = new FileInputStream(picFile);
  15. //3,目的是socket 输出流。
  16. OutputStream out = s.getOutputStream();
  17. byte[] buf = new byte[1024];
  18. int len = 0;
  19. while((len=fis.read(buf))!=-1){
  20. out.write(buf,0,len);
  21. }
  22. //告诉服务器端图片数据发送完毕,不要等着读了。
  23. s.shutdownOutput();
  24. //读取上传成功字样。
  25. InputStream in = s.getInputStream();
  26. byte[] bufIn = new byte[1024];
  27. int lenIn = in.read(bufIn);
  28. System.out.println(new String(bufIn,0,lenIn));
  29. //关闭。
  30. fis.close();
  31. s.close();
  32. }
  33. }

 

##################################################################
服务端

  1. ###UploadPicServer.java
  2. public class UploadPicServer {
  3. /**
  4. * @param args
  5. * @throws IOException
  6. */
  7. public static void main(String[] args) throws IOException {
  8. System.out.println("上传图片服务端运行......");
  9. // 创建server socket 。
  10. ServerSocket ss = new ServerSocket(10007);
  11. while (true) {
  12. // 获取客户端。
  13. Socket s = ss.accept();
  14. //实现多个客户端并发上传,服务器端必须启动做个线程来完成。
  15. new Thread(new UploadPic(s)).start();
  16. }
  17. }
  18. }

 

  1. ###UploadPic.java
  2. public class UploadPic implements Runnable {
  3. private Socket s;
  4. public UploadPic(Socket s) {
  5. this.s = s;
  6. }
  7. @Override
  8. public void run() {
  9. try {
  10. String ip = s.getInetAddress().getHostAddress();
  11. System.out.println(ip + ".....connected");
  12. // 读取图片数据。
  13. InputStream in = s.getInputStream();
  14. // 写图片数据到文件。
  15. File dir = new File("e:\\uploadpic");
  16. if (!dir.exists()) {
  17. dir.mkdir();
  18. }
  19. // 为了避免覆盖,通过给重名的文件进行编号。
  20. int count = 1;
  21. File picFile = new File(dir, ip + "(" + count + ").jpg");
  22. while (picFile.exists()) {
  23. count++;
  24. picFile = new File(dir, ip + "(" + count + ").jpg");
  25. }
  26. FileOutputStream fos = new FileOutputStream(picFile);
  27. byte[] buf = new byte[1024];
  28. int len = 0;
  29. while ((len = in.read(buf)) != -1) {
  30. fos.write(buf, 0, len);
  31. }
  32. // 给客户端一个回馈信息。
  33. OutputStream out = s.getOutputStream();
  34. out.write("上传成功".getBytes());
  35. // 关闭资源。
  36. fos.close();
  37. s.close();
  38. } catch (IOException e) {
  39. }
  40. }
  41. }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号