Java 上传图片(Socket连接)
需求:客户端将图片上传至服务器端,服务器端接收并保存图片,然后给客户端一个回应。
可能同时有多个客户端向服务器端上传图片,所以就要处理同时多个客户端的并发请求。
思路:只要将服务器端处理客户端的请求放到一个单独的线程中去,就可以处理多任务请求。
客户端
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连接)相关推荐
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...
- java使用socket连接4G DTU设备发短信
java使用socket连接4G DTU设备发短信测试Demo import java.io.IOException; import java.io.OutputStream; import java ...
- Java的socket连接以及string字符串长度过长解决
一.socket连接服务: 1.客户端:Java package cn.lw;import java.io.BufferedReader; import java.io.BufferedWriter; ...
- java 断开socket连接_【java serversocket 长连接,客户端断开的问题】-Java技术论坛-ZOL中关村在线...
答:将代码 Java code try { inStream = incoming.getInputStream(); outStream = incoming.getOutputStream(); ...
- Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类 Serve ...
- java socket 判断Socket连接失效
要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...
- java nio socket长连接_nio实现Socket长连接和心跳
前段时间用bio方式,也就是传统io实现了socket的长连接和心跳,总觉着服务端开启多线程管理socket连接的方式过于消耗资源,数据并发的情况下可能会影响到性能,因此就尝试使用nio改进原来的代码 ...
- Java面试题17 牛客 下面哪个选项正确创建socket连接?
Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...
- java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式
Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...
- JAVA 判断Socket 远程端是否断开连接
JAVA 判断Socket 远程端是否断开连接 最近在做项目的时候,遇到这样一个问题,如何判断 Socket 远程端连接是否关闭,如果关闭的话,就要重建连接Socket的类提供了一些已经封装好的方法, ...
最新文章
- 对于计算机网络的整体框架的概括(转载) 个人感觉很好
- Android 自定义View之3D骰子旋转
- 深入浅出统计学(十二)置信区间
- java程序运行结果题_(Java程序设计)试题
- 卡耐基梅隆大学专家谈核心技术市场化:「AI 周边相关机遇最大」
- 使用redisson时关于订阅数的问题
- LeetCode59 Spiral Matrix II
- 如何不屏蔽Android系统的返回按键
- iView Input 输入框表单非空校验,默认值是 Number 类型校验失败
- Linux USB 驱动开发实例(二)—— USB 鼠标驱动注解及测试
- LeedCode刷题
- [leetcode]Merge Intervals @ Python
- Fatal error: Class 'ZipArchive' not found的解决办法
- 【BZOJ】2194: 快速傅立叶之二
- java异步编程书籍_《Java异步编程实战》(翟陆续)【摘要 书评 试读】- 京东图书...
- 魔兽世界mysql启动不了_WOW 魔兽世界单机版 3.3 不能启动服务器的解决方案 | 学步园...
- php获取上月月初,php获取当前月与上个月月初及月末时间戳的方法
- 08-02-loggin-模块
- 猿创征文|【国产数据库实战】一文学会应用SqlSugar访问及操作人大金仓数据库
- 关于数据字典的理解与设计
热门文章
- Vagrant启动报错
- CodeForces1036 F Relatively Prime Powers(莫比乌斯容斥)
- jpg、png、jpeg区别与压缩等知识总结 —— 性能优化篇
- 大二期末作业(KTV点歌程序-纯java)
- SVN不能Cleanup的几种解决办法
- 双绞线连接布线方案(计算机网络)
- 大数据实训整体解决方案
- 从程序员到CTO的Java技术路线图
- AGPBI: {“kind“:“error“,“text“:“Program type already present: android.support.v4.os.ResultReceiver$1“
- 塑料齿轮模具设计指南