这两天下了一个使用UDP传输目录内文件的程序,发出来给大家一起看看,共同进步。有问题请指教。

由于udp丢包比较厉害,因此使用了自定义的内部协议,进行双方的确认。

程序跑起来后,看网络状况,有时候会一卡一卡的。

源程序下载见:http://download.csdn.net/detail/hardstone1/6039033,需要2积分,呵呵,赚点小分

以下是程序说明:

* 本程序集成了数据导出端(服务器端)和数据导入端(客户端),使用UDP进行文件传递

* 服务器端的文件来源目录,见Tools中SOURCEPATH的设置

 * 客户端的文件保存目录,见Tools中DESTINATIONPATH的设置,可以根据自己需要进行调整

 * 

 * 由于UDP存在丢包问题,因此Server和Client的通讯需要来回包进行确认,协议包头如下:

 * 1. "55 aa 99 01",表示客户端发起广播请求,请求服务器响应

 * 2. "55 aa 99 02 + 服务器的设备名称",表示服务器接收到广播后,响应客户端请求,把此包指定IP发送客户端(此指定IP地址可以UDP广播信息包中获取)

 * 3. "55 aa 99 03",表示客户端接收到服务器的响应,接着向服务器指定IP请求:需要传递的文件总数目和文件总容量(单位为KB)

 * 4. "55 aa 99 04 + 4字节文件总数目和4字节的文件总容量",表示服务器接收到客户端的0x03请求,统计SOURCEPATH中的所有文件数目和文件总容量,发送指定IP地址的客户端

 * 5. "55 aa 99 05",客户端接收到文件总数目和文件总容量,请求服务器发送文件具体内容

 * 6. "55 aa 99 10 + 文件名称",服务器发送文件名称

 * 7. "55 aa 99 11",客户端响应,表示接收到服务器发送的0x10包

 * 8. "55 aa 99 12+文件内容",服务器端发送具体文件内容

 * 9. "55 aa 99 13",客户端响应,表示接收到服务器发送的0x12包

 * 10."55 aa 99 14",服务端高速客户端发送完毕

 * 

 * 注意:服务器发送0x10包后,收到客户端的0x11响应包,将把文件具体内容拆分成N个0x12包,每个包的大小见Tools.byteSize的设置,目前设置为10K,

 *
服务器没收到一个0x13响应包,才能继续发下一个0x12包,已放置UDP的丢包,另外每个0x12包最多发送10次而无0x13包的响应,则发送进程结束,界面提示

 * 

 * 本程序已经封装好,调用见TransportFilesActivity.java文件

在两个Android设备间通过UDP传输目录内文件的更多相关文章

  1. 基于UDP传输协议局域网文件接收软件设计 Java版

    网路传输主要的两大协议为TCP/IP协议和UDP协议,本文主要介绍基于UDP传输的一个小软件分享,针对于Java网络初学者是一个很好的练笔,大家可以参考进行相关的联系,但愿能够帮助到大家. 话不多说, ...

  2. Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等

    此案例主要说的是Android使用GridView加载SD卡下所有目录,文件夹多层遍历,文件图标修改,设置文件对应打开方式等功能. 如图: 代码: public class GridViewFile ...

  3. Android 开发Project中各个目录和文件的介绍

    如上图标号: 存放java文件的文件夹“src”: 由aapt工具根据应用中的资源文件自动生成的R.java文件,以及buildConfiger.java文件,这两个文件最好不要去修改: 存放各种资源 ...

  4. Android 中的一些特殊目录与文件

    用作命令的二进制文件位于/system/bin/与/system/xbin/下 应用数据位于/data/data/, 原始安装文件位于/data/app/(Play商店中非免费应用位于/data/ap ...

  5. Android如何实现TCP和UDP传输

    TCP和UDP在网络传输中非常重要,在Android开发中同样重要. 首先我们来看一下什么是TCP和UDP. 什么是TCP? TCP:Transmission Control Protocol 传输控 ...

  6. Android之Socket的基于UDP传输

    接收方创建步骤: 1.  创建一个DatagramSocket对象,并指定监听的端口号 DatagramSocket socket = new  DatagramSocket (4567); 2. 创 ...

  7. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  8. UDP传输包大小(转)

    源:UDP传输包大小 在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像ICQ一 ...

  9. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

随机推荐

  1. google base 之MessagePumpForUI

    base库中比较有意思就是这个类了,如同很多界面库一样,创建了一个隐藏窗口来处理需要在界面线程处理的消息,大体原理也就是需要执行task的时候发送一个自定义的消息,当窗口接收到task的时候调用保存起 ...

  2. WTL CEdit关联绑定ID,滚动到最新的一行

    绑定控件 HWND logEdit = ::GetDlgItem(this->m_hWnd, IDC_EDIT_LOG); m_outputlogEdit.Attach(logEdit); 滚动 ...

  3. Qt 控件

    一.布局管理器 QHBoxLayout 水平布局 QVBoxLayout 垂直布局 QGridLayout 格点布局 QFormLayout 关联布局 QSplitter 分裂器 Spacers 间隔 ...

  4. [原创]C语言里为何会有“2+2=5”的结果

    原文链接:C语言里为何会有“2+2=5”的结果 写这篇原创文章是因为看到了极客中的一篇文章<有趣各种编程语言实现2+2=5>,其中C语言是这样实现的: int main() { ″; // ...

  5. 求一个int型整数的两种递减数之和(华为2015笔试题及答案)

    给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同 ...

  6. VHDL设计时参数定义的方法 例子

    -- SPtb LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_ ...

  7. 刷爆github小绿点

    转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/kit/git/green_blush.html 工程地址,欢迎star!! ...

  8. PHP学习之数据库操作

    PHP数据库操作: 一.连接数据库 mysql_connect() 例:$link=mysql_connent("localhost","root"," ...

  9. 武汉新芯:定位存储器制造,两年后或推3D NAND

    武汉新芯集成电路制造公司(XMC)2006成立,2012年底起独立经营,是国有制企业.为了区别于本土的制造巨头SMIC(中芯国际)和华力微电子(HLMC)等,XMC将立足存储器制造.近日,武汉新芯董事 ...

  10. Socks5协议中文文档

    译者:Radeon(Radeon bise@cmmail.com) 译文公布时间:2001-6-18 文件夹 1.介绍 2.现有的协议 3.基于TCP协议的客户 4.请求 5.地址 6.应答 7.基于 ...