java网络编程(7)——利用tcp实现文件上传
其实客户端与服务端通讯的道理都是一样的,都是通过输入与输出这两个流,那么实现文件上传也就是同样的,客户端把文件读到文件流,服务端用文件流来接受,然后写到一个文件中,这样子就实现了文件上传,文件拷贝也是同样的道理~,具体看代码实现:
客户端:
package com.seven.tcp; import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; public class TcpFileUploadClient { public static void main(String[] args) throws Exception { Socket socket = new Socket("127.0.0.1",10001); FileInputStream fis = new FileInputStream(new File("e:\\test.txt")); OutputStream out = socket.getOutputStream(); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf))!=-1){
out.write(buf);
} socket.shutdownOutput(); InputStream in = socket.getInputStream(); len = in.read(buf); System.out.println("return:"+new String(buf,0,len)); fis.close(); socket.close(); } }
服务端:
package com.seven.tcp; import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; /**
* 服务端要用多线程来实现,这样才能实现多个用户同时上传
*
* @author Seven
*
*/
public class TcpFileUploadServer { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(10001); //循环,每次有新的连接就开启一个新的线程
while(true){ Socket socket = serverSocket.accept(); new Thread(new FileUploadThread(socket)).start(); } } } class FileUploadThread implements Runnable { private Socket socket; public FileUploadThread(Socket s) {
this.socket = s;
} // 在run方法中实现文件上传
public void run() { try { System.out.println(socket.getInetAddress().getHostAddress()+"....connected"); String filename = socket.getInetAddress().getHostAddress(); int count = 1; File file = new File("e:\\" + filename + count); while (file.exists()) {
file = new File("e:\\" + filename + count++);
} FileOutputStream fileOutputStream = new FileOutputStream(file); InputStream in = socket.getInputStream(); byte[] b = new byte[1024]; int len = 0; while ((len = in.read(b)) != -1) {
fileOutputStream.write(b,0,len);
}
//返回成功
OutputStream out = socket.getOutputStream();
out.write("success!".getBytes()); socket.close(); }catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} } }
java网络编程(7)——利用tcp实现文件上传的更多相关文章
- java 网络编程(五)Socket多线程上传文件
客户端: package cn.sasa.socketUploadFileDemo; import java.io.FileInputStream; import java.io.IOExceptio ...
- 用java网络编程中的TCP方式上传文本文件及出现的小问题
自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传
Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题(转) 我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jqu ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- Java 网络编程 -- 基于TCP实现文件上传
Java TCP 操作基本流程 一.创建服务器 1.指定端口, 使用serverSocket创建服务器 2.阻塞式连接 accept 3.操作:输入流 输出流 4.释放资源 二.创建客户端 1.使用S ...
- 从零探索Java网络编程01之 TCP/IP 与 Socket
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧? 一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...
- selenium+java利用AutoIT实现文件上传
转自https://www.cnblogs.com/yunman/p/7112882.html?utm_source=itdadao&utm_medium=referral 1.AutoIT介 ...
- [转]利用 Commons-Fileupload 实现文件上传
转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...
随机推荐
- Windows脚本相关
1 获取IP地址 echo StartChangeIPFile echo 获取主机名 for /f %%i in ('hostname') do (set pcName=%%i) ::ping %pc ...
- CSS中设置border:none和border:0的区别
在我们设置CSS的时候,对标签元素不设置边框属性或者取消边框属性一般设置为:border:none;或border:0;两种方法均可. border:none;与border:0;的区别体现有两点:一 ...
- 搭建yum仓库与定制rpm包
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...
- Tensorflow滑动平均模型tf.train.ExponentialMovingAverage解析
觉得有用的话,欢迎一起讨论相互学习~Follow Me 移动平均法相关知识 移动平均法又称滑动平均法.滑动平均模型法(Moving average,MA) 什么是移动平均法 移动平均法是用一组最近的实 ...
- python下用OpenCV的圆形检测
写在文章前 这些天因为工作需要要学习图像检测,笨笨的我啥都不会要盯着OpenCV重头开始学(:′⌒`),甚至查资料能力都很弱弱〒▽〒 夸一下我最好的男票(*^▽^*) 男盆友也不是做图像处理的 但是 ...
- 关于Java中equal 和 == 的区别
在对Java开发还不熟练的时候,往往很多人都喜欢用==去比较两个对象是否相等,有时候就会出现很奇葩的问题. 其实这类问题并不是奇葩问题,只是我们不够细心而已,在Java中“==”比较两个变量本身的值, ...
- 浅谈大型web系统架构(一)
目录 Web前端系统 负载均衡系统 数据库集群系统 缓存系统 分布式存储系统 分布式服务器管理系统 代码发布系统 动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl. ...
- 多线程访问DataTable
项目中需要读取数据库中的多张表.由于表的数据比较多,串行读取时耗时比较多,所以对程序做了一点优化. 环境 .NET 3.5,SQL Server 2012,Visual Studio 2015 过程 ...
- 浅谈python中的闭包函数
闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello worl ...
- PHPExcel生成或读取excel文件
以下是详细代码示例: <?php /** * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要 * 打开对应行的注释. * 如果使用 Excel5 ,输出的内容应该是G ...