网络传输文件原理

前引

同样,我们先对上一期留下的问题进行解答,求半径有两种方法(以下纯数学推导,可选择性跳过)

方法一:

结合正弦定理、面积公式,再加上海伦公式,便得到

这样半径便求出来了,其中a、b、c可通过两点距离公式求得。

方法二:

最后分享本人写的软件,链接:https://pan.baidu.com/s/1dUGUnnO18PSVG0Zhhruiyg 密码:nl3b,软件截图:

以上就是求圆坐标的公式,这是作者在做机器人运动控制时要用到的一个小部分。有机会给读者讲讲机器人运动控制和测试算法。

使用教程

好了,言归正传,进入本章主题——通过网络进行文件传输。很多时候我们采用的是第三方软件,那些软件体积庞大,有些时候还得联网传。当然可以通过USB进行传输,但假如你没有USB设备呢?本文便是本着这个疑问而推出的。主要用到以下几个软件,连接还是上方几个链接(链接:https://pan.baidu.com/s/1dUGUnnO18PSVG0Zhhruiyg密码:nl3b),如图所示,我们可以发现文件非常小。

这个是电脑端文件接收界面:

这是电脑端文件发送界面:

这是安卓端手机接收界面:

用软件很简单,假设两台设备处于同一个路由则无需配置,若处于不同路由则只需要电脑开wifi给手机/电脑,或者手机开热点给电脑,让两者处于同一个局域网即可。然后发送方设置的ip和端口号与接收方一样即可(注意,软件默认ip是本地ip,端口号是8899)。讲到这里,大家可以用软件去试一下。PC端默认接收路径在D:\receiveFile,安卓默认系统根目录/A_Recv。需要源码或者要定制化的读者可以私聊笔者啊。

怎么样,是不是觉得特别简单方便?如果你觉得文章给力,不要犹豫,分享给你的好友,让更多需要的人在笔者公众号获取他们需要的东西。

传输原理

本章比较专业,不过笔者会用通俗的语句进行解释的,如果觉得有点吃力可以私聊笔者进行解疑,或者跳过本章。

软件是基于TCP协议的,底层诸如TCP三次握手等这里就不讲了,主要讲应用层实现。传输主要包括:开始传输、传输文件名、传输文件、传输停止四个部分组成。

开始传输:进行TCP连接

传输文件名:TCP连接后,发送方先将文件名发送给接收方,接收方接受到文件名应答,发送方收到应答,准备开始传输。(注意,PC间传输没问题,但由于PC端采用GBK编码,手机端采用UTF-8编码,所以在传输文件名时记得转码)。

传输文件:发送方获取用户选择的文件,读取文件大小,进行分卷传输,每等到接收方响应,即开始下一卷传输,直到文件发送完成。接收方收到的数据进行数据合并,输出文件。整个传输采用Byte类型进行传输。

传输结束:接收方接收完数据后向发送方发送停止信号后关闭TCP连接。同样,发送方接收到停止信号,关闭连接。可能读者会问了,发送方为什么要等待停止信号?那是因为TCP缓冲机制的问题,虽然发送方已经将全部数据发送出去了,但数据还在缓冲区,一旦此时关闭连接,而缓冲区数据未全部输出,那么接收方接收的数据就是不完整的。

当然,粗略情况下可以采用上面的方案,不过,上面的方案没有容错处理,所以有可能会出现意料不到的结果,读者可以自己添加传输协议来保证数据传输的可靠性。

如果读者想要源码欢迎私聊笔者,眼尖的读者可能会发现没有安卓手机发送端的,这个就交给读者自己去完成了,有遇到的问题的,都可以和笔者交流。

怎么样,是不是觉得特别简单方便?如果你觉得文章给力,不要犹豫,分享给你的好友,让更多需要的人在笔者公众号获取他们需要的东西。

每期一题:莫比乌斯环——一个只有一个面的单面曲面,被誉为人类智慧的结晶之一。假设你在纸上画了一个人,然后这个人在纸上绕了一圈。请问,这个人会发生什么惊奇的变化?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G0Y0VO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动