客户端:

package cn.sasa.socketUploadFileDemo;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; public class SocketClientDemo { public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8050);
OutputStream output = socket.getOutputStream(); FileInputStream inputFile = new FileInputStream("D:\\sasa\\Weixin.zip");
byte[] buff = new byte[1024];
int len = 0;
while((len = inputFile.read(buff)) != -1) {
output.write(buff,0,len);
}
//传完后告诉服务器上传完成,否则服务器会一直等待读取
socket.shutdownOutput(); InputStream input = socket.getInputStream();
len = input.read(buff);
System.out.println(new String(buff,0,len)); socket.close();
inputFile.close();
}
}

服务端:

package cn.sasa.socketUploadFileDemo;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class ServerSocketDemo { public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8050);
//一直监听
while(true) {
Socket clientSocket = server.accept();
Thread th = new Thread(new UploadRunnable(clientSocket));
th.start();
}
} }

Runnable接口的实现类UploadRunnable.java,用于上传文件

package cn.sasa.socketUploadFileDemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; public class UploadRunnable implements Runnable { private Socket clientSocket;
public UploadRunnable(Socket socket) {
this.clientSocket = socket;
}
@Override
public void run() {
try {
InputStream input = clientSocket.getInputStream();
File upload = new File("D:\\upload");
if(!upload.exists()) {
upload.mkdirs();
}
//文件命名
String fileName = "sasa"+ System.currentTimeMillis()+".zip";
FileOutputStream outputFile = new FileOutputStream(upload+File.separator+fileName);
byte[] buff = new byte[1024];
int len = 0;
while((len = input.read(buff)) != -1) {
outputFile.write(buff,0,len);
}
OutputStream output = clientSocket.getOutputStream();
output.write("上传完成".getBytes());
outputFile.close();
clientSocket.close();
}catch(Exception ex) {
ex.printStackTrace();
}
} }

java 网络编程(五)Socket多线程上传文件的更多相关文章

  1. Java网络编程(TCP协议-练习-上传文本文件)

    客户端: package WebProgramingDemo; import java.io.BufferedReader; public class UploadTextClient { /** * ...

  2. [iOS 多线程 & 网络 - 2.11] - ASI框架上传文件

    A.ASI的上传功能基本使用 1.实现步骤 (1)创建请求 使用ASIFormDataRequest (2)设置上传文件路径 (3)发送请求     2.上传相册相片 UIImagePickerCon ...

  3. Java EE之通过表单上传文件

    public class Ticket { private String customerName; private String subject; private String body; priv ...

  4. java http工具类和HttpUrlConnection上传文件分析

    利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...

  5. 菜鸟学SSH(五)——Struts2上传文件

    上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...

  6. Java如何解决form表单上传文件,以及页面返回处理结果通知!

    前端JSP代码 <form id='formSumbit' class='form-horizontal' action='/ncpay/route/chlsubmcht/batchImpor' ...

  7. 基于socket实现上传文件

    基于socket实现文件上传 客户端代码: #!/usr/bin/env python # -*- coding:utf-8 -*- """ 这个是实现上传文件 首先让客 ...

  8. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...

  9. 『网络の转载』关于初学者上传文件到github的方法

    说来也惭愧,我是最近开始用github,小白一个,昨天研究了一个下午.终于可以上传了,所以今天写点,一来分享是自己的一些经验,二来也是做个记录,万一哪天又不记得了:) 废话不多说,直接来,这次主要介绍 ...

随机推荐

  1. java Filter过滤器例外URL设置

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter> <filter-name>SessionFilter&l ...

  2. TCP连接

    https://www.cnblogs.com/dj0325/p/8490293.html

  3. Sass编译时Invalid US-ASCII character解决办法

    编译scss文件时,如果出现如下错误 Error: Invalid US-ASCII character "\xC2" on line 63 of src/assets/_scss ...

  4. 奇葩问题 eclipse中DDMS的LOGcat只有一列level

    http://stackoverflow.com/questions/25010393/eclipse-logcat-shows-only-the-first-letter-from-each-mes ...

  5. R语言reads.table 自动将字符串变成了逻辑值

    今天遇到了一个问题,文件中有一列的值为全为F, 用read.table 读取的时候,自动将F 变成了false 对于这样的转换,可以通过 colClass 参数控制 colClass 参数指定每一列的 ...

  6. README.md文件编辑

    111 蜗牛图片管理系统 =============== ## 安装环境 >+ thinkphp版本: >+ php版本:.0以上 >+ 需要安装在服务器环境,免费使用 ### 特点 ...

  7. [IR] Suffix Trees and Suffix Arrays

    前缀树 匹配前缀字符串是不言自明的道理. 1. 字符串的快速检索 2. 最长公共前缀(LCP) 等等 树的压缩 后缀树 Let s=abab, a suffix tree of s is a comp ...

  8. vue分页组件

    <template> <div> <ul class="pagination"> <li @click="goTo(1)&quo ...

  9. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解

    原文:Chalarangelo  译文:IT168 https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with ...

  10. 【laravel5.6】 laravel中间件内生成参数并且传递到控制器的2种方法

    中间件方法: /** * 自定义中间件: * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return ...