TCP文件上传实现

服务端:

  1. package net.study;
  2. import java.io.*;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. public class TcpTransferFileServer {
  6. public static void main(String[] args) throws IOException {
  7. // 1.创建服务
  8. ServerSocket serverSocket = new ServerSocket(9000);
  9. // 2.监听客户端连接
  10. Socket socket = serverSocket.accept(); // 阻塞式监听,会一直等待客户端连接
  11. // 3.获取输入流
  12. InputStream is = socket.getInputStream();
  13. // 4.文件输出
  14. FileOutputStream fos = new FileOutputStream(new File("receive.jpg")); // 不加jpg会传出乱码
  15. byte[] buffer = new byte[1024];
  16. int len;
  17. while ((len = is.read(buffer)) != -1){
  18. fos.write(buffer,0,len);
  19. }
  20. // 通知客户端我接受完毕了
  21. OutputStream os = socket.getOutputStream();
  22. os.write("我接受完毕了,你可以断开了".getBytes());
  23. // 5.关闭资源
  24. fos.close();
  25. is.close();
  26. socket.close();
  27. serverSocket.close();
  28. }
  29. }

客户端:

  1. package net.study;
  2. import java.io.*;
  3. import java.net.Socket;
  4. public class TcpTransferFile {
  5. public static void main(String[] args) throws IOException {
  6. // 1.创建一个Socket连接
  7. Socket socket = new Socket("127.0.0.1",9000);
  8. // 2.创建一个输出流
  9. OutputStream os = socket.getOutputStream();
  10. // 3.读取文件
  11. FileInputStream fis = new FileInputStream("cat1.jpg");
  12. // 4.写出文件
  13. byte[] buffer = new byte[1024]; // 资源浪费
  14. int len;
  15. while ((len = fis.read(buffer)) != -1){ // 输入流中还有数据,继续写
  16. os.write(buffer,0,len);
  17. }
  18. // 通知服务器,我已经结束了
  19. socket.shutdownOutput(); // 我已经传输完了
  20. // 确定服务器接收完毕,才能断开连接
  21. InputStream inputStream = socket.getInputStream();
  22. // String byte[]
  23. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  24. byte[] buffer2 = new byte[1024];
  25. int len2;
  26. while ((len2 = inputStream.read(buffer2)) != -1){
  27. baos.write(buffer2,0,len2);
  28. }
  29. System.out.println(baos.toString());
  30. // 5.关闭资源
  31. baos.close();
  32. inputStream.close();
  33. fis.close();
  34. os.close();
  35. socket.close();
  36. }
  37. }

TCP文件上传实现的更多相关文章

  1. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  2. QT TCP文件上传服务器

    利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...

  3. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  4. NetworkComms 文件上传下载和客户端自动升级(非开源)

    演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...

  5. 用c++开发基于tcp协议的文件上传功能

    用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...

  6. java 网络编程之TCP通信和简单的文件上传功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  7. java网络编程(7)——利用tcp实现文件上传

    其实客户端与服务端通讯的道理都是一样的,都是通过输入与输出这两个流,那么实现文件上传也就是同样的,客户端把文件读到文件流,服务端用文件流来接受,然后写到一个文件中,这样子就实现了文件上传,文件拷贝也是 ...

  8. Python Socket实现文件上传(TCP协议)

    在TCP协议下通过socket模块实现文件上传 #!/usr/bin/env python # -*- coding: utf-8 -*- # desc: tcp_server_file_upload ...

  9. TCP大文件上传与UDP协议

    一.UCP大文件上传(解决粘包问题) ①客户端 import socket, os, json, struct client = socket.socket() client.connect(('12 ...

随机推荐

  1. 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译

    面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...

  2. Formily教程 | formily是中后台复杂场景的表单解决方案

    前言 formily 不是一个简单的前端轮子.Formily 是一个由阿里巴巴集团多 BU 共建的面向中后台复杂场景的表单解决方案,它也是一个表单框架.它的前身是供应链平台在 2019 年初对外开源的 ...

  3. Java | 一个".java"源文件中是否可以包括多个类(不包括内部类)

    第一种情况:(有public) 定义一个java源文件(Hello.java),里面只有一个类: public class Hello { public static void main(string ...

  4. F5负载均衡-配置指导手册(含IPv6)

    F5负载均衡-配置手册 设备概况 图形化界面 通过网络形式访问F5任一接口地址,打开浏览器输入https://网络接口地址:或pc机直连F5的MGMT带外管理口,打开浏览器,输入https://192 ...

  5. C语言:预处理命令总结

    预处理指令是以#号开头的代码行,# 号必须是该行除了任何空白字符外的第一个字符.# 后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行 ...

  6. C语言:键盘输入

    C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据. getchar().getche().getch():这三个 ...

  7. Motion Planning 是什么

    前言与引用 这一个呢,主要是自己突然看一篇论文的时候不知道 为什么他提出的方法对于规划来说就是好的,规划又应该分为哪几个部分,解决的是哪几个部分的问题?带着这个问题,我就去搜:Motion Plann ...

  8. java并发编程基础——线程的创建

    一.基础概念 1.进程和线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程.(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据 ...

  9. [蓝牙嗅探-Ubertooth One] 千元开源蓝牙抓包 Ubertooth One 安装和使用

    目录 前言 1.编译 Ubertooth tools 1.1.准备工作 1.2.编译安装 libbtbb 1.3.编译安装 Ubertooth tools 1.4.Wireshark 插件 1.5.更 ...

  10. (JAVA2)写博客的好帮手:Typora

    (二)写博客的好帮手:Typora 推荐文本编辑器 :Typora 文件后缀 : xxx.md 安装步骤 打开浏览器搜索Typora 进入官网后,点击Download(下载) 选择自己的操作系统 选择 ...