//TCP客户端
public class TCPClient { public static void main(String[] args)throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
OutputStream out = socket.getOutputStream();
FileInputStream fis = new FileInputStream("d:\\jay.jpg");
byte[] data = new byte[1024];
int len = 0;
while((len = fis.read(data)) != -1){
out.write(data,0,len);
} //给服务器写终止序列
socket.shutdownOutput(); //得到的回应
InputStream in = socket.getInputStream();
len = in.read(data);
System.out.println(new String(data,0,len)); //关闭资源
fis.close();
socket.close();
} }

TCP服务端:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random; public class TCPServer { public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
//处理客户端传来的文件流
InputStream in = socket.getInputStream();
File upload = new File("d:\\upload");
if(!upload.exists()){
upload.mkdir();
}
String filename = "taobao" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
int len = 0;
byte[] data = new byte[1024];
while((len = in.read(data)) != -1){
fos.write(data,0,len);
} //回复客户端
socket.getOutputStream().write("上传成功!".getBytes()); //关闭流资源
fos.close();
socket.close();
server.close();
} }

 进阶:(多线程图片上传服务)

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class TCPThreadServer { public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(8888);
while(true){
//获取到一个客户端,必须开启新线程
Socket socket = server.accept();
new Thread(new Upload(socket)).start();
}
} }

TCP服务端代码封装到 run 方法中

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random; public class Upload implements Runnable{
private static Socket socket; public Upload(Socket socket){
this.socket = socket;
} public void run(){
try{
//处理客户端传来的文件流
InputStream in = socket.getInputStream();
File upload = new File("d:\\upload");
if(!upload.exists()){
upload.mkdir();
}
String filename = "itcast" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
int len = 0;
byte[] data = new byte[1024];
while((len = in.read(data)) != -1){
fos.write(data,0,len);
} //回复客户端
socket.getOutputStream().write("上传成功!".getBytes()); //关闭流资源
fos.close();
socket.close();
}catch(Exception ex){} }
}

TCP客户端图片上传服务端保存本地示例的更多相关文章

  1. 微信小程序开发之多图片上传+服务端接收

    前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...

  2. [转]微信小程序开发(二)图片上传+服务端接收

    本文转自:http://blog.csdn.net/sk719887916/article/details/54312573 文/YXJ 地址:http://blog.csdn.net/sk71988 ...

  3. 微信小程序---图片上传+服务端接受

    原文地址:http://blog.csdn.net/sk719887916/article/details/54312573 微信小程序,图片上传,应用地方-修改用户信息的头像. 详细代码: 小程序的 ...

  4. C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB

    C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB 我用的数据库是Oracle,就目前来看,许多数据库现在都倾向于Oracle数据库,对ORACLE数据库基本的操作也是必须 ...

  5. 在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片

    在"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传"一文中,使用JSAjaxFileUploader这款插件实现了单文 ...

  6. PHP 文件上传服务端及客户端配置参数说明

    文件上传服务器端配置: ·file_uploads = On, 支持HTTP上传 ·upload_tmp_dir = , 临时文件保存的目录 ·upload_max_filesize=2M, 允许上传 ...

  7. 用Web Service实现客户端图片上传到网站

    由于项目需要,通过本地客户端,把图片上传到网站.通过webservice. 这是客户端代码: private void btnimg_Click(object sender, EventArgs e) ...

  8. ssm框架实现图片上传显示并保存地址到数据库

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  9. thinkphp微信开发之jssdk图片上传并下载到本地服务器

    public function test2(){ $Weixin = new \Weixin\Controller\BaseController(); $this->assign('signPa ...

随机推荐

  1. 测试:fiddler使用

    Fiddler是个很强大的工具,很多新人可能不知道怎么用. 直接下载安装,然后打开电脑端的Fiddler,点击Tools > Fiddler Options,勾选上 Allow remote c ...

  2. dxRangeTrackBar使用教程

    Properties: Max:最大值 Min:最小值 Frequency:设置刻度值多大值显示PageSize:选择时跳动的区域大小 SelectionColor:选择区域颜色 ShowSelect ...

  3. Linksys E 刷Tomato shibby

    前言 一直以来都用Linksys的无线路由器~因为它的稳定~多年来一直用Linksys自身的固件~因为之前没用它做什么特别的应用~所以一直用了下来~它的原厂固件的稳定性也从没让我操过心~近来要为用户提 ...

  4. 在Linux直接运行安卓程序

    Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情. 方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的. 谷歌在很早之前提出了archon的方案,能够直接 ...

  5. sap 调试工具,修改变量值

    1: 点击修改,输入变量值,按enter键.

  6. 常用笔记:Linux

    Linux打包压缩排除指定文件夹: 使用Linux的tar 命令打包压缩文件夹,有时候需要排除里面的某几个文件夹,加上--exclude参数: tar -zcvf blog.tar.gz --excl ...

  7. Django-分页、中间件和请求的声明周期

    一.分页 相关连接:https://www.cnblogs.com/kongzhagen/p/6640975.html 一.Django的分页器(paginator) 1.view.py 视图 fro ...

  8. Hadoop生态集群hdfs原理(转)

    初步掌握HDFS的架构及原理 原文地址:https://www.cnblogs.com/codeOfLife/p/5375120.html   目录 HDFS 是做什么的 HDFS 从何而来 为什么选 ...

  9. gerrit上的commit msg中关联jira单号(含gerrit的安装)

    这个问题折腾了很久,前期后后大概一个月吧,终于搞定了,查了很多资料,有的不完整,有的完全就不能用,有的没说完整,所以一定要记录下来,我的心血啊. 由于公司在用的gerrit的是正式环境中的,大家都在使 ...

  10. Tensorflow实现LeNet-5、Saver保存与读取

    一. LeNet-5 LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络. 卷积神经网络能够很好的利用图像的结构信息. 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定 ...