//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. 图解HTTP笔记

    http 0.9  1990年  http 1.0  1996年 Tcp/Ip分层模型 应用层: 如Ftp Http DNS. 传输层: 如 TCP UDP .将报文分成报文段.“传输”指的是端对端( ...

  2. django基础-02:虚拟环境

    4. 虚拟环境 4.1 概念 之前安装python包的命令: sudo pip3 install 包名 包的安装路径:/usr/local/lib/python3.5/dist-packages 在同 ...

  3. laravel用crud修改产品items-新建resource controller和routing

    前面我们创建了laravel简单的items产品api,但是需要在数据库添加,如何在网页上直接添加呢?我们可以用view来操作crud(增加Create.读取查询Retrieve.更新Update和删 ...

  4. hdu1240/poj2225 BFS广搜的再理解

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/guodongxiaren/article/details/37756347 原题地址 pid=124 ...

  5. 手机端 https://doc.vux.li/zh-CN/components/badge.html

    https://doc.vux.li/zh-CN/components/badge.html 手机端前端框架

  6. SecureCRT乱码问题的解决

    == 安装后默认的设置是utf8,不是汉字乱码,是一块一块的看不清,OMG... 设置这两个页面就好了

  7. iOS UI基础-12.0 Storyboard

    storyboard创建控制器 1.先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UIStoryboard stor ...

  8. cocos2d-x -Lua 字符串

    字符串或串(String)是由数字.字母.下划线组成的一串字符. Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. 以上三种方式的 ...

  9. es6Math对象新增的方法

    Math.trunc() Math.trunc方法用于去除一个数的小数部分,返回整数部分. 对于没有部署这个方法的环境,可以用下面的代码模拟. Math.trunc = Math.trunc || f ...

  10. FileFilter文件过滤器

    引入:将E:\java目录下的所有.java文件复制到E:\jad目录下,并将原来的文件的扩展名从.java改为.jad package com_2; import java.io.File; imp ...