Java网络编程TCP实现文件上传功能
作者:跑起来要带风! 发布时间:2023-01-02 00:00:27
标签:java,TCP,文件上传
本文实例为大家分享了Java网络编程TCP实现文件上传的具体代码,供大家参考,具体内容如下
上一篇博客,用网络编程TCP 实现聊天,这次实现文件上传。
客户端:
package com.kuang.lesson02;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class TcpClientDemo2 {
public static void main(String[] args) throws Exception {
//1、创建一个Socket连接
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);
//2、创建一个输出流
OutputStream os = socket.getOutputStream();
//3、读取文件
FileInputStream fis = new FileInputStream(new File("sendFile.jpg"));
//4、写出文件
byte[] buffer = new byte[1024];
int len;
while ((len=fis.read(buffer))!=-1) {
os.write(buffer,0,len);
}
//通知服务器,我已经结束了
socket.shutdownOutput();
//确定服务器接收完毕,才能断开连接
InputStream inputStream = socket.getInputStream();
//String byte[]
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer2 = new byte[1024];
int len2;
while ((len2=inputStream.read(buffer2))!=-1) {
baos.write(buffer2,0,len2);
}
System.out.println(baos.toString());
//5、关闭资源
fis.close();
os.close();
socket.close();
}
}
服务端:
package com.kuang.lesson02;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//服务端
public class TcpServerDemo02 {
public static void main(String[] args) throws Exception {
//1、创建服务
ServerSocket serverSocket = new ServerSocket(9000);
//2、监听客户端的连接
//阻塞式监听,会一直等待客户端连接
Socket socket = serverSocket.accept();
//3、获取输入流
InputStream is = socket.getInputStream();
//4、文件输出
FileOutputStream fos = new FileOutputStream(new File("receive.jpg"));
byte[] buffer = new byte[1024];
int len;
while ((len=is.read(buffer))!=-1) {
fos.write(buffer,0,len);
}
//通知客户端我接收完毕
OutputStream os = socket.getOutputStream();
os.write("我接收完毕了,你可以断开了".getBytes());
//5、关闭资源
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
运行结果:
1、首先可以发现目录下只有要上传的文件sendFile.jsp
2、运行服务端,创建服务,可以发现一直在运行
3、运行客户端,文件上传,可以发现目录下多了个上传到服务端的文件receive.jpg,同时接收到了服务端发送来的消息。
4、打开两个文件,可以发现相同
网络编程实现文件上传就简单介绍到这里了!
来源:https://blog.csdn.net/weixin_44668898/article/details/107306758
0
投稿
猜你喜欢
- Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天
- 本文以实例形式简单讲述了C#对象为Null模式(Null Object Pattern),分享给大家供大家参考。具体实现方法如下:所谓的&q
- 如何创建可以存放各种类型的数组?根据JavaSE的语法知识储备,如果现在让你们创建如标题一样的数组,你会怎么创建呢?答案是:使用 Objec
- 单链表:每个数据是以节点的形式存在的每个节点分为数据域和指针域数据域中保存该节点的数据指针域中保存指向下一个节点的指针实现思路:节点类Sin
- Vector(向量)是 java.util 包中的一个类,该类实现了类似动态数组的功能。向量和数组相似,都可以保存一组数据(数据列表)。但是
- 一、简介此游戏是《2D 赛车》的”魔改版“——2.5D 双人
- 注解定义: 注解是一种注释机制,它可以注释包、类、方法、变量、参数,在编译器生成类文件时,标注可以被嵌入到字节码中。注解的分类:内置注解Ov
- 前言前两篇我们详细了解了 findById 和 findAll 以及 findAll 的分页查询,如果说JPA只有上面的两种查询功能,那就太
- 一、动态编译简介new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类。一百个类,有一个类错了,都无法编译。通过动态加载类可以解
- 介绍MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。比如执行前、执行后或者对SQL结果集处理、sql入参处理等,这样就可以在
- 学C#的原因其实挺简单的,因为一直对游戏挺感兴趣,查了下比较流行的游戏引擎Unity的主要开发语言是C#,所以就决定从C#入手,学学面向对象
- 摘要:在spring boot中 MVC这部分也有默认自动配置,也就是说我们不用做任何配置,那么也是OK的,这个配置类就是 WebMvcAu
- 一、Android系统启动Android设备从按下开机键到桌面显示画面,大致过程如下图流程:开机显示桌面、从桌面点击 App 图标到 Act
- 本文实例讲述了Android编程解析XML方法。分享给大家供大家参考,具体如下:XML在各种开发中都广泛应用,Android也不例外。作为承
- 前言项目中时不时遇到查字典表等数据,只需要返回数据,不需要写其他业务,每个字典表可能都需要写一个接口给前端调用,比较麻烦,所以采用下面这种方
- 使用WPF做的一个简单的操作文件的demo,包括复制和移动文件夹,核心思想就是使用递归,如果只是移动或者复制单一文件,直接使用File.Co
- 问题 webView调用JS出错。 class TestJS {&n
- 大家好,我是梦辛工作室的灵,最近在帮客户修改安卓程序时,有要求到一个按钮要浮动在键盘的上方,下面大概讲一下实现方法:其实很简单,分三步走第一
- Java注解介绍基于注解(Annotation-based)的Java开发无疑是最新的开发趋势.[译者注: 这是05年的文章,在2014年,
- 这篇文章主要介绍了新手学习微服务SpringCloud项目架构搭建方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学