需求:客户端将图片上传至服务器端,服务器端接收并保存图片,然后给客户端一个回应。

可能同时有多个客户端向服务器端上传图片,所以就要处理同时多个客户端的并发请求。

思路:只要将服务器端处理客户端的请求放到一个单独的线程中去,就可以处理多任务请求。

客户端
package com.bxd.network;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class PicClent {public static void main(String[] args) {try {Socket s = new Socket("192.168.1.11", 10008);FileInputStream fis = new FileInputStream("C:\\Users\\Lee64\\OneDrive\\图片\\bizhi.jpg");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 is = s.getInputStream();byte[] bufIn = new byte[1024];int num = is.read(bufIn);System.out.println(new String(bufIn, 0, num));fis.close();s.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
服务端
package com.bxd.network;import java.net.ServerSocket;
import java.net.Socket;public class PicServer {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(10008);while(true) {Socket s = ss.accept();new Thread(new PicThread(s)).start();}}class PicThread implements Runnable {private Socket s;public PicThread(Socket s) {super();this.s = s;}@Overridepublic void run() {String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "......connected");int count = 1;try {InputStream is = s.getInputStream();File file = new File(ip + ".jpg");if (file.exists() && file.isFile()) {file = new File(ip + "(" + count + ")" + ".jpg");}while(file.exists() && file.isFile()) {file = new File(ip + "(" + (count++) + ")" + ".jpg");}FileOutputStream fos = new FileOutputStream(file);byte[] buf = new byte[1024];int len = 0;while((len = is.read(buf)) != -1) {fos.write(buf, 0, len);}OutputStream os = s.getOutputStream();os.write("upload success".getBytes());fos.close();s.close();} catch (Exception e) {throw new RuntimeException(ip + "  upload fail");}}}}

Java 上传图片(Socket连接)相关推荐

  1. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...

  2. java使用socket连接4G DTU设备发短信

    java使用socket连接4G DTU设备发短信测试Demo import java.io.IOException; import java.io.OutputStream; import java ...

  3. Java的socket连接以及string字符串长度过长解决

    一.socket连接服务: 1.客户端:Java package cn.lw;import java.io.BufferedReader; import java.io.BufferedWriter; ...

  4. java 断开socket连接_【java serversocket 长连接,客户端断开的问题】-Java技术论坛-ZOL中关村在线...

    答:将代码 Java code try { inStream = incoming.getInputStream(); outStream = incoming.getOutputStream(); ...

  5. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受

    一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类         Serve ...

  6. java socket 判断Socket连接失效

    要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...

  7. java nio socket长连接_nio实现Socket长连接和心跳

    前段时间用bio方式,也就是传统io实现了socket的长连接和心跳,总觉着服务端开启多线程管理socket连接的方式过于消耗资源,数据并发的情况下可能会影响到性能,因此就尝试使用nio改进原来的代码 ...

  8. Java面试题17 牛客 下面哪个选项正确创建socket连接?

    Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...

  9. java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式

    Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...

  10. JAVA 判断Socket 远程端是否断开连接

    JAVA 判断Socket 远程端是否断开连接 最近在做项目的时候,遇到这样一个问题,如何判断 Socket 远程端连接是否关闭,如果关闭的话,就要重建连接Socket的类提供了一些已经封装好的方法, ...

最新文章

  1. 对于计算机网络的整体框架的概括(转载) 个人感觉很好
  2. Android 自定义View之3D骰子旋转
  3. 深入浅出统计学(十二)置信区间
  4. java程序运行结果题_(Java程序设计)试题
  5. 卡耐基梅隆大学专家谈核心技术市场化:「AI 周边相关机遇最大」
  6. 使用redisson时关于订阅数的问题
  7. LeetCode59 Spiral Matrix II
  8. 如何不屏蔽Android系统的返回按键
  9. iView Input 输入框表单非空校验,默认值是 Number 类型校验失败
  10. Linux USB 驱动开发实例(二)—— USB 鼠标驱动注解及测试
  11. LeedCode刷题
  12. [leetcode]Merge Intervals @ Python
  13. Fatal error: Class 'ZipArchive' not found的解决办法
  14. 【BZOJ】2194: 快速傅立叶之二
  15. java异步编程书籍_《Java异步编程实战》(翟陆续)【摘要 书评 试读】- 京东图书...
  16. 魔兽世界mysql启动不了_WOW 魔兽世界单机版 3.3 不能启动服务器的解决方案 | 学步园...
  17. php获取上月月初,php获取当前月与上个月月初及月末时间戳的方法
  18. 08-02-loggin-模块
  19. 猿创征文|【国产数据库实战】一文学会应用SqlSugar访问及操作人大金仓数据库
  20. 关于数据字典的理解与设计

热门文章

  1. Vagrant启动报错
  2. CodeForces1036 F Relatively Prime Powers(莫比乌斯容斥)
  3. jpg、png、jpeg区别与压缩等知识总结 —— 性能优化篇
  4. 大二期末作业(KTV点歌程序-纯java)
  5. SVN不能Cleanup的几种解决办法
  6. 双绞线连接布线方案(计算机网络)
  7. 大数据实训整体解决方案
  8. 从程序员到CTO的Java技术路线图
  9. AGPBI: {“kind“:“error“,“text“:“Program type already present: android.support.v4.os.ResultReceiver$1“
  10. 塑料齿轮模具设计指南