Java 基于TCP的socket实现文件传输

  • 基于TCP的socket结合java的io流 实现客户端与服务器之间的文件传输

Socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合

设计思路

1、建立连接

两个接口一个模仿服务器,一个模仿客户端 服务器创建服务端口,
客户端根据端口号和ip创建两者间的连接

2、发送文件

客户端将文件以输入流的方式传给服务器
服务器利用socket.getInputStream()方法获取到客户端传进来的输入流,并将其接收存放

3、接收反馈信息

服务器接收成功后利用输出流向客户端发出反馈
客户端接收导服务器的输出信息并打印下来

代码实现

实现流程

服务器

1、启动服务器
   服务器创建端口
    服务器监听端口,等待访问数据。。。。。
3、服务器接收客户端发送过来的文件
   服务器将反馈消息发往客户端

客户端

2、启动客户端
   客户端与服务器建立连接
    客户端将文件以流的格式发送到服务器上
     客户端等待服务器反馈。。。。。
4、客户端接收服务器发送过来的反馈消息

1、客户端

 public static void main(String[] args) throws IOException {//建立与服务器的连接Socket client = new Socket("192.168.3.76", 1617);//创建客户端输出流OutputStream out = client.getOutputStream();//创建客户端输入流,将文件发送服务器FileInputStream in =new FileInputStream(new File("D:打印020.txt"));byte[] buff = new byte[1024];int len;//io流读写数据while ((len = in.read(buff)) != -1) {out.write(buff, 0, len);}//将接收的数据发送出去 并 拒绝接收输出流的数据client.shutdownOutput();//接收来自于服务器端的反馈,并显示在控制台InputStream sin = client.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(sin));String line = null;while ((line = reader.readLine()) != null) {System.out.println(line);}//关闭资源out.close();in.close();client.close();sin.close();reader.close();}

2、服务器

  public static void main(String[] args) {try (
//      服务器接收客户端的数据并返回消息ServerSocket server = new ServerSocket(1617);//监听要建立到此套接字的连接并接受Socket socket = server.accept();//创建输入流接收客户端发送过来的数据InputStream in = socket.getInputStream();//创建输出流存放读取的数据OutputStream out = new FileOutputStream(new File("D:打印0211.txt"))) {byte[] buff = new byte[1024];int len;//io流读写数据while ((len = in.read(buff)) != -1) {out.write(buff, 0, len);}// 接收到图片后向客户端反馈try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8)){writer.write("你好,我已成功收到图片!");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

Java 基于TCP的socket实现文件传输相关推荐

  1. Java基于TCP(Socket)协议的网络语音聊天

    Java基于TCP协议的网络语音聊天 本聊天是基于tcp协议进行的,其本质为:本地录音->将录音通过网络编程转发给他人->他人进行录音的播放. 所需知识:多线程,基于tcp协议的网络编程 ...

  2. python网络通信中cs架构_python3基于TCP实现CS架构文件传输

    本文实例为大家分享了python3实现CS架构文件传输的具体代码,供大家参考,具体内容如下 1.目标: 基于tcp实现CS架构的文件传输 指令列表:(1)get:从服务器端下载文件 (2)put:向服 ...

  3. Java中基于TCP通过socket嵌套字连接方式传送文件

    这里写目录标题 Java中通过socket连接传送文件 前言 socket嵌套字 发送方 接收方 总结 Java中通过socket连接传送文件 前言 在项目的开发中经常遇到需要传送文件的情况,有时候是 ...

  4. 基于Socket的文件传输(使用CSocket类)

    本软件使用MFC采用面向对象的方法实现了基于Socket的文件传输.这是原来研究生课程的结课作业,实现了Socket的发送和接收,以及读取ini配置文件等操作.使用了CSocket类 以下是当时结课作 ...

  5. Linux平台基于socket的文件传输服务器和客户端

    Linux平台基于socket的文件传输服务器和客户端 目录 前言 一.服务器程序结构 二.客户程序结构 三.代码 1.服务器主程序video_serv_fork.c 2.服务器子程序video_tr ...

  6. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    转自即时通讯网:http://www.52im.net/ 本文原作者:"水晶虾饺",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说" ...

  7. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  8. 基于TCP的socket详解(Linux系统)

    内容有点多建议配合实例学习:https://blog.csdn.net/FUN6367/article/details/105294984 1.基于TCP的socket五元组结构 两个程序:Serve ...

  9. 基于TCP的socket编程网络掉线重连

    基于TCP的socket编程   sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的socke ...

最新文章

  1. opencv 无法找到tbb_debug.dll
  2. C# 循环语句 for循环
  3. 命名空间“Microsoft.AspNet”中不存在类型或命名空间名“Mvc”
  4. 【Java并发编程】之八:多线程环境中安全使用集合API
  5. Centos升级Python 2.7并安装pip、ipython
  6. AD20学习笔记5---PCB设计规则设置及PCB手工布线
  7. leetcood学习笔记-58-最后一个单词的长度
  8. 算法正确性和复杂度分析
  9. 一步步编写操作系统 11 实模式下程序分段的原因
  10. 高可用+负载均衡 方案
  11. 潘多拉固件设置ipv6_(转)pandorabox固件+PPPOE拨号+IPV6
  12. java转俯视图_Tweening / Animating threejs相机到顶视图
  13. 易语言 内存调用html文件夹,将文件移到指定文件夹 易语言移动文件到指定文件夹内...
  14. conda 转载自 生信技能树
  15. 敏捷转型中的敏态与稳态
  16. 智慧城市,定位“需求”
  17. CYGWIN安装方法
  18. 图片文件Exif信息详细说明
  19. Vue组件化开发--脚手架的安装使用、目录结构说明
  20. 2021数学建模国赛A题

热门文章

  1. win7x64使用mapx
  2. SAS9.1.3中文全功能版下载
  3. 竞价推广为什么没有好的效果
  4. 新年快乐!分享两个新年代码。
  5. Java集成开发工具推荐
  6. IC数字常见问题(五)跨时钟域的代码检查和跨时钟的综合处理
  7. 【OverFeat】Integrated Recognition, Localization and Detection using Convolutional Networks(2014) 全文翻译
  8. Web自动化测试如何做?Web自动化测试的详细流程和步骤
  9. Linux网络编程:用C语言实现的聊天程序(同步通信)
  10. plsql developer oracle home为空,Windows 64位下装安装Oracle 11g,PLSQL Developer的配置问题,数据库显示空白的完美解决方案(图文教程)...