网络编程应用:基于TCP协议【实现文件上传】--练习
要求:
基于TCP协议实现一个向服务器端上传文件的功能
客户端代码:
package Homework2;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class Client {public static void main(String[] args){System.out.println("客户端已启动");//1.在本工程下创建一个文件夹,并创建文件,使用这个文件来进行文件传输功能//当然你也可以在自己电脑上找一个文件直接上传File file=new File("Example");file.mkdirs();File file2=new File("Example\\a.txt");Socket socket=null;OutputStream os=null;FileInputStream fis=null;try {//2.创建Socket对象,并得到相应的输出流----以及创建文件输入流socket=new Socket("127.0.0.1",7000);os=socket.getOutputStream();fis=new FileInputStream(file2);byte[] bs=new byte[1024];int count=0;//3.发送文件while((count=fis.read(bs))!=-1){os.write(bs, 0, count);os.flush();}} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(os!=null){try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(fis!=null){try {fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(socket!=null){try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
服务器端代码
package Homework2;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;//2 实现上传文件
public class Server {public static void main(String[] args){System.out.println("服务器已启动");Socket socket=null;InputStream is=null;FileOutputStream fos=null;ServerSocket serverSocket=null;try {//1.创建ServerSocket对象,获得Socket对象以及输入流serverSocket=new ServerSocket(7000);socket=serverSocket.accept();is=socket.getInputStream();//2.接收过来的文件存放位置fos=new FileOutputStream(new File("Example\\e.txt"));//3.接收文件byte[] bs=new byte[1024];int count=0;while((count=is.read(bs))!=-1){fos.write(bs, 0, count);fos.flush();}System.out.println("文件已接收:over!");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(is!=null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(fos!=null){try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(socket!=null){try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(serverSocket!=null){try {serverSocket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}
运行结果:
网络编程应用:基于TCP协议【实现文件上传】--练习相关推荐
- 基于TCP协议的文件上传与下载
一.前言 TCP协议:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793 定义.传输控制 ...
- TCP文件上传Java_java 基于TCP协议的文件上传
参考文档 1.https://www.sxt.cn/Java_jQuery_in_action/ten-filebytestream.html 2.https://www.sxt.cn/Java_jQ ...
- 基于FTP协议实现文件上传与下载
目录 一.FTP简介 二.关于FTP服务器 三.文件上传 分步讲解: 完整实现代码: 四.下载文件 分步讲解: 完整实现代码: 小结 一.FTP简介 FTP(File Transfer Protoco ...
- 基于 tcp协议完成的上传下载
ps: 下面两个版本全部是 基于 tcp协议完成的. 简单版(无注释): 服务器(server)代码: from socket import socket sk = socket() sk.bind( ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(二)
回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...
- [RFC1867] HTML中基于表单的文件上传
网络工作组:E. Nebel 征求意见:1867 L. Masinter 类别:试验 施乐公司 十一月 1995 HTML中基于表单的文件上传 这个备忘录的状态 这个备忘录为互联网社区定义了一个试验协 ...
- SSM框架 基于Bootstrap fileinput 实现文件上传功能
SSM框架 基于Bootstrap fileinput 实现文件上传功能 pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <! ...
- Android学习笔记---28_网络通信之通过HTTP协议实现文件上传,组拼http 的post方法,传输内容
28_网络通信之通过HTTP协议实现文件上传 ---------------------------------------------- 1.注意,做表单提交的时候:程序代码; <form ...
- 项目_功能模块_基于Spring Boot的文件上传下载功能的设计与实现
文章目录 基于Spring Boot的文件上传下载功能模块的设计与实现 1.前言 2.技术栈 3.关键源码 4.实现效果 4.1.登录 4.2.文件列表 4.3.上传文件测试 4.3.1.测试图片 4 ...
最新文章
- 使用 UIBezierPath 进行简单的图形绘制
- 中大李文均团队在氮循环功能基因的生物地理学分布格局研究中取得进展
- 禁止解析PHP、限制user_agent、php相关配置
- c语言获取时间并存储,如何在C程序中获取日期和时间值?
- mysql七种join理论
- LoadRunner几个重要的概念:事务、集合点、思考时间
- docker-2 深入了解docker
- Linux安装Nexus3
- QQ微信域名防封 预防域名封禁 强制跳转至浏览器打开
- 俞敏洪沉默,新东方落泪
- 算法特训营第2周刷题题目
- 第18届中国智能家居主题沙龙在北京成功举办
- 机器人会偷走你的饭碗吗——写作篇
- 计算机相关的文章,关于计算机的论文精选范文
- (5.1)Typora——Typora 图像保存和上传( 本地 + PicGo + SMMS/Gitee)
- 公众号文章阅读量数据导出
- 找出列表中重复数的下标
- TIDB-OLTP和OLAP的区别
- 【XSY3367】青春野狼不做姐控偶像的梦(线段树)
- (完美可行)小米设备一键激活XPOSED框架方法
热门文章
- java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...
- c++新特性11 (10)shared_ptr七reset
- Qt 原理-MOC(3) 对象模型
- 基于SpringBoot和Vue的个人博客系统
- 深度学习arm MMU一篇就够了
- [crypto]-50-base64_encode和base64_decode的C语言实现
- crack app(jeb动态调试)
- 【安全漏洞】ThinkPHP 3.2.3 漏洞复现
- 【网络安全威胁】企业风险远不止勒索软件,盘点当今企业面临的四种安全威胁
- 寒假每日一题(提高组)【Week 1 完结】