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


猜你喜欢
- handler在安卓开发中是必须掌握的技术,但是很多人都是停留在使用阶段。使用起来很简单,就两个步骤,在主线程重写handler的handl
- 也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难。本片文章
- 1、概念首先我们理解一下,什么叫做完美数?问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数
- synchronized锁的升级(偏向锁、轻量级锁及重量级锁)java同步锁前置知识点1.编码中如果使用锁可以使用synchronized关
- 前言我们一说到spring,可能第一个想到的是 IOC(控制反转) 和 AOP(面向切面编程)。没错,它们是spring的基石,得益于它们的
- Java8已经发布很多年了,但是很多人在开发时仍然坚持使用着Date和SimpleDateFormat进行时间操作。SimpleDateFo
- Android中Property模块的键值设置Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信
- 一、场景描述接《Java设计模式(一)工厂模式》工厂模式有一缺点,就是破坏了类的封闭性原则。例如,如果需要增加Word文件的数据采集,此时按
- 最近公司项目需要在WebView上调用手机系统相册来上传图片,开发过程中发现在很多机器上无法正常唤起系统相册来选择图片。解决问题之前我们先来
- 简评:Android Support Library 26 中终于实现了一个等待已久的功能: RecyclerView 的快速滚动 。And
- 本文实例为大家分享了C#生成验证码图片的具体代码,供大家参考,具体内容如下/// <summary>
- 1. 参数中直接加入%%param.setUsername("%CD%"); param.set
- 目录1.项目gitthub地址链接: https://github.com/baisul/generateCode.git切换到master
- springboot默认的打包方式为jar包,jar包的有优点是不需要更改的配置,并且内嵌了tomcat,如果打成jar包直接可以丢到doc
- 随着Android设备增多,不少网站都开始设备Android设备,而Android主流设备类型以手机和平板为主。网站在适配时通过User A
- 一、题目描述题目实现:运行服务器程序,等待客户端程序连接。二、解题思路首先需要在服务器中建立服务器套接字,并等待客户程序的连接。创建一个类:
- 1 自定义类加载器自定义类加载器的代码很简单,只需要继承ClassLoader类,覆写findClass方法即可其默认实现是会抛出一个异常:
- Android中ListView下拉刷新实现效果图:ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理
- @ConfigurationProperties源码分析@ConfigurationProperties主要作用就是将prefix属性指定的
- 前言Java 中的 synchronized关键字可以在多线程环境下用来作为线程安全的同步锁。本文不讨论 synchronized 的具体使