查看: 101|回复: 0

[原创] 【赚周年币】Fireduino A11.WiFi Server测试

[复制链接]

19

主题

13

好友

1236

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    23 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    爱板会员勋章 活跃会员勋章

    发表于 2017-1-2 14:41:13 |显示全部楼层
    本帖最后由 limale 于 2017-1-17 20:28 编辑

    先前测试了 TCP client的通信很顺利,下来我们把Fireduino当作Server端而电脑当作Client来进行数据的收发。
    在开始之前还是先脑补一些概念。

    WiFi 组网通信
    一般架设WiFi无线网络是由一个Access Point (AP)和多个无线网卡站点(STA)组成的无线网络。AP一般称为网络桥接器或接入点,俗称 ”热点“,它是当作传统的有线局域网络与无线局域网络之间的桥梁,因此任何一台装有无线网卡的站点(STA)均可透过AP去分享有线局域网络甚至广域网络的资源,其工作原理相当于一个内置无线发射器的HUB或者是路由, 而无线网卡则是负责接收由AP所发射信号的CLIENT端设备,如此便能以无线的模式,配合既有的有线架构来分享网络资源,架设复杂程度远远低于传统的有线网络。


    Fireduino WiFi 实现通信
    在通过学习前面的章节,通过Fireduino SDK 提供的API 加入无线AP 并获取或配置网络设置后,即可与其他STA通信,如果AP具备联网条件,还可以与远程设备通信。


    网络通信
    网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。 网络通信中最重要的就是网络通信协议。当今网络协议有很多,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。Fireduino 的网络通信协议为TCP/IP协议。


    TCP/IP 通信
    一些基本的常识
    在学习协议之前,我们应该具备一些基本知识。


    1、互联网地址(ip地址)
    网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。


    2、域名系统
    域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。


    3、端口号(port)
    注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。


    4、应用编程接口
    现在PC,手持设备等常用的网络编程接口有socket。而Fireduino 在此之上设计开发了一套与Arduino WiFi 兼容的API ,在不修改Arduino WiFi Shield 示例的情况下可直接在Fireduino 上直接运行,可见Firefly团队为了更加完善Fireduino 付出了努力。


    TCP 与 UDP
    TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。


    面向连接的TCP
    “面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机 A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

    面向非连接的UDP协议
    “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。


    TCP与UDP的差别
    TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。TCP协议和UDP协议之间的差别如下
      1.TCP为面向连接,UDP面向非连接
      2.TCP是可靠的传输协议,UDP为不可靠的传输协议
      3.TCP传输大量的数据,UDP传输少量的数据
      4.TCP速度慢,UDP速度快


    Client 与 Server
    客户端服务器又叫主从式架构,简称C/S结构,是一种网络架构,它把客户端 (Client)与服务器 (Server) 区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。


    Client
    主动的角色(主)。 发送要求。 等待直到收到回应。 服务器可是有状态或者无状态的。无状态的服务器不会保留任何两个请求之间的信息,有状态服务器会记住请求之间的信息。这些信息的作用域可以是全局的或者某个事务 (session)的。


    Server
    被动的角色(从)。 等待来自客户端的要求。 处理要求并传回结果。


    几个客户端与服务器端的例子
    你上网浏览网页
      浏览器(IE)就是客户端程序,服务器上的网站就是服务器端程序


    你使用QQ聊天
      QQ就是客户端程序,腾讯机房放的存储、交换聊天信息的程序就是服务器端程序


    你玩魔兽世界(一个网络游戏)
      电脑上装的魔兽程序就是客户端程序,你连接的服务器就是是服务器端程序
    Fireduino WiFi Server
    Fireduino SDK 为WiFi 提供了一套完善的API,该组API兼容Arduino WiFi Shield 示例。
    Fireduino WiFi Server 流程
    相对于客户端的实现,服务器端的实现稍复杂一点。
    第一步:
    创建一个 WiFiServer 对象,其参数为表监听的端口号,接着调用对象函数begin函数告诉Server对象开始进行监听客户端的连接。
    第二步:
    如果客户端连接入服务器端上时,可以通过server对象函数available获取连入的客户端对象。在此客户端对象进行数据收发。
    第三步:
    完成数据传输后可以调用客户端对象 stop 函数 结束传输与关闭传输的TCP通道。

    这里指定Server端80端口并且实例化WiFiServer对象
    QQ截图20170102142947.jpg

    在setup中启动Server服务
    QQ截图20170102143001.jpg

    在loop中等待client的连接,当连接上之后串口打印有一个client连接上了。如果Client发送数据给Server,Server会将这个信息转发给Client并且通过串口打印出来。
    QQ截图20170102143031.jpg

    连接上之后Server发送给Client的信息
    QQ截图20170102141936.jpg

    QQ截图20170102141951.jpg

    Client发送数据,Server转发给Client并且通过串口打印出来。
    QQ截图20170102142800.jpg

    QQ截图20170102142809.jpg

    程序源码: TCP_Server.rar (8.12 KB, 下载次数: 0)

    已有 1 人评分 收起 理由
    loveeeboard + 20

    总评分:  + 20   查看全部评分

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-4-29 23:29 , Processed in 0.149668 second(s), 15 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部