周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 ZLG/P嵌入式TCPP协议栈简要说明 TCPP协议和以太网协议是使用最广泛的通讯协议,而基于底层的以太网协议的实现就 由以太网控制器来负责了,目前比较常用的嵌入式以太网控制芯片有RTL8019AS、CS8900 等,我们先以RTL809AS为例子介绍以太网的控制芯片。 RTL8019AS简筒介 RIL8019AS是一种高度集成的以太网控制芯片,能简单的实现 Plug and Play并兼容 NE2000、掉电等特性。在全双工模式下,如果是连接到一个同样是全双工的交换机或集线 器,就可实现同时接收和发送。这个特性虽然不能把传输速率从10MbpS提高到20Mbps 但是在执行以太网 CSMA/CD协议时,可以避免更多的冲突的发生。而 Microsoft's Plug and Play功能就可以为用户减轻对资源配置的烦恼(如IRQ、 1/O address等)。又或者是在一些 特殊的场合,为了对一些不支持 Microsoft's Plug and Play的器件的兼容,RIL8091AS还可 以选择跳线模式或非跳线模式。 支持PnP自动检测模式; 支持 Ethernet ii和IEEE802.310Base5,10Base2,10 BaseT; ●软件兼容8位或16位的NE2000模式 支持跳线和非跳线模式 支持在非跳线模式下的 Microsoft‘ s Plug and Play配置; ●支持在全双工模式下的双倍信道带宽 支持UTP、AUI、BNC的自动检测 在10 BaseT下支持自动极性修正 ●支持8路中断请求(IRQ 支持16位I/0地址 内建16 K SRAM 支持四盏可编程诊断LED RTL8019AS管脚排列及内部功能框图如图1所示
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 ZLG/IP 嵌入式 TCP/IP 协议栈简要说明 TCP/IP 协议和以太网协议是使用最广泛的通讯协议,而基于底层的以太网协议的实现就 由以太网控制器来负责了,目前比较常用的嵌入式以太网控制芯片有 RTL8019AS、CS8900 等,我们先以 RTL8019AS 为例子介绍以太网的控制芯片。 1 RTL8019AS 简介 RTL8019AS 是一种高度集成的以太网控制芯片,能简单的实现 Plug and Play 并兼容 NE2000、掉电等特性。在全双工模式下,如果是连接到一个同样是全双工的交换机或集线 器,就可实现同时接收和发送。这个特性虽然不能把传输速率从 10Mbps 提高到 20Mbps, 但是在执行以太网 CSMA/CD 协议时,可以避免更多的冲突的发生。而 Microsoft's Plug and Play 功能就可以为用户减轻对资源配置的烦恼(如 IRQ 、I/O address 等)。又或者是在一些 特殊的场合,为了对一些不支持 Microsoft's Plug and Play 的器件的兼容,RTL8091AS 还可 以选择跳线模式或非跳线模式。 z 支持 PnP 自动检测模式; z 支持 Ethernet II 和 IEEE802.3 10Base5, 10Base2, 10BaseT; z 软件兼容 8 位或 16 位的 NE2000 模式; z 支持跳线和非跳线模式; z 支持在非跳线模式下的 Microsoft‘s Plug and Play 配置; z 支持在全双工模式下的双倍信道带宽; z 支持 UTP、AUI 、BNC 的自动检测 z 在 10BaseT 下支持自动极性修正 z 支持 8 路中断请求(IRQ) z 支持 16 位 I/O 地址 z 内建 16K SRAM z 支持四盏可编程诊断 LED RTL8019AS 管脚排列及内部功能框图如图 1 所示。 - 1 -
州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 网络数据 FIFO ISA总线接口 匚本地DMA 远程DM 系统/0端口16位/8位 16K SRAM K 数据发送 图1RTL8019AS管脚排列及内部功能框图 如图1所示,RIL8019AS芯片内部集成了DMA控制器、ISA总线控制器和集成16K SRAM、网络PY收发器。用户可以通过DMA方式把需要发送的数据写入片内SRAM中,让 芯片自动将数据发送出去;而芯片在接收到数据后,用户也可以通过DMA方式将其读出 RTL8019AS的详细介绍请见RTL8019AS数据手册。 明白了RIL8019AS所提供的资源与硬件接口,便可以设计RTL8019AS与LPC2200的 硬件电路了。 2RTL8019AS与LPc2200的硬件电路设计 RTL8019AS与LPC2200一般通过外部总线进行连接我们假设RTL8019AS与LPC2200 的连接关系如表1所示 表1RTL8019AS与LPC2200连接关系 RTL8O19AS LPC2200 SDO- SDIS RTL8019AS数据总线 D0~D15 SAO-SA4 RTL8019AS地址总线 A1-A5 SAS RTL8019AS地址总线 A22 RTL8019AS地址总线 TORB RIL8019AS读使能(低电平有效) lOWB RIL8019AS写使能(低电平有效) RTL8019AS中断输出信号 INT N(PO.7) RSTDRV RTL8019AS复位输入信号 NET RST (PO.6) 由以上关系,可知RL8019AS使用LPC2200外部存储控制的Bank2部分,而RTL8019AS 的IO地址为0X00300~0X0031F,所以RTL8019AS在SA8=1;SA5=0的时候选通,其地址如 数据地址0x83400000x83400001F
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 FIFO ISA总线接口 系统I/O端口 本地DMA 远程DMA 16K SRAM 本地地址 远程地址 本地总线 数据发送 16位 16位/8位 网络数据 图 1 RTL8019AS 管脚排列及内部功能框图 如图 1 所示,RTL8019AS 芯片内部集成了 DMA 控制器、ISA 总线控制器和集成 16K SRAM、网络 PHY 收发器。用户可以通过 DMA 方式把需要发送的数据写入片内 SRAM 中,让 芯片自动将数据发送出去;而芯片在接收到数据后,用户也可以通过 DMA 方式将其读出。 RTL8019AS 的详细介绍请见 RTL8019AS 数据手册。 明白了 RTL8019AS 所提供的资源与硬件接口,便可以设计 RTL8019AS 与 LPC2200 的 硬件电路了。 2 RTL8019AS 与 LPC2200 的硬件电路设计 RTL8019AS 与 LPC2200 一般通过外部总线进行连接。我们假设 RTL8019AS 与 LPC2200 的连接关系如表 1 所示。 表 1 RTL8019AS 与 LPC2200 连接关系 RTL8019AS 功 能 LPC2200 SD0 ~ SD15 RTL8019AS 数据总线 D0 ~ D15 SA0~SA4 RTL8019AS 地址总线 A1~A5 SA8 RTL8019AS 地址总线 A22 SA5 RTL8019AS 地址总线 nCS2 IORB RTL8019AS 读使能(低电平有效) nOE IOWB RTL8019AS 写使能(低电平有效) nEW INT0 RTL8019AS 中断输出信号 INT_N(P0.7) RSTDRV RTL8019AS 复位输入信号 NET_RST(P0.6) 由以上关系,可知RTL8019AS使用LPC2200外部存储控制的Bank2部分,而RTL8019AS 的 IO 地址为 0X00300~0X0031F,所以 RTL8019AS 在 SA8=1;SA5=0 的时候选通,其地址如 下: 数据地址 0x83400000~0x83400001F - 2 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 NET RST为LPC2200输出引脚,RTL8019AS中断信号为中断输入信号,且为外部中 断。 RTL8019AS的SD0~SD15串了一个470欧姆电阻连接到LPC2200的D0D15 3ZLG/P概述 3.1ZLG/P简介 ZLG/P是广州周立功单片机发展有限公司开发的面向嵌入式系统开发的TCPP协议 栈,是ZLG系列中间件的重要成员之一。 ZLG/IP提供实现 Internet网络上IP接点的功能 是个高性能的嵌入式TCPP协议栈软件。它使用μCOS-Ⅱ实时操作系统的信号机制来实现 个多任务并行并可重入的协议栈,完全使用 ANSI C进行编写,可以象μC/OS-Ⅲ那样支持 多种CPU。ZLGP还具有层次清晰,易于升级和修改等特点。目前,ZLG/P的最新版本为 3.2 ZLG/IP的特点 Socket库兼容BSD标准 ZLG/P带有 Socket apl接口函数,方便用户进行应用层协议的开发 可移植 全部代码由 ANSI C编写,并且与目标处理器的存储器结构无关(即与无论存储器 是大端结构还是小端结构均不影响程序的执行),方便用户移植到自己的目标系统 中 可固化 ZLG/P为嵌入系统设计,如果您有固化手段,它可以嵌入到您的产品中成为产品的 一部分 ●支持多任务操作系统 基于uC/OS-I实时多任务操作系统,具有良好的实时性能,所有 Socket apl接口函 数库都可以工作在非阻塞方式 为嵌入系统做过优化 代码可重入,简易的路由协议处理,可以跨越网关收发数据,支持RFC标准TCP, TCP层代码小而且速度快。 提供源代码 需要购买源码的用户可以与广州周立功单片机发展有限公司联系 可配置 得到源码的用户可以对一些参数进行配置或裁减代码。 ●基本完整的TCP栈支持,TCP模块处理支持以下功能 (1)发送确认; (2)带外数据 (3)数据重传 (4)数据校验; (5)流模式; (6)连接数目只受内存大小限制 33已实现的特性 支持TCP,UDP,IP,ICMP,ARP, ETHERNET等协议 兼容BSD标准的 Socket api接口函数库; ICMP实现PING的功能和UDP无效端口返回
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 NET_RST 为 LPC2200 输出引脚,RTL8019AS 中断信号为中断输入信号,且为外部中 断。 RTL8019AS 的 SD0~SD15 串了一个 470 欧姆电阻连接到 LPC2200 的 D0~D15。 3 ZLG/IP 概述 3.1 ZLG/IP 简介 ZLG/IP 是广州周立功单片机发展有限公司开发的面向嵌入式系统开发的 TCP/IP 协议 栈,是 ZLG 系列中间件的重要成员之一。ZLG/IP 提供实现 Internet 网络上 IP 接点的功能, 是个高性能的嵌入式 TCP/IP 协议栈软件。它使用µC/OS-II 实时操作系统的信号机制来实现 一个多任务并行并可重入的协议栈,完全使用 ANSI C 进行编写,可以象µC/OS-II 那样支持 多种 CPU。ZLG/IP 还具有层次清晰,易于升级和修改等特点。目前,ZLG/IP 的最新版本为 1.0。 3.2 ZLG/IP 的特点 z Socket 库兼容 BSD 标准 ZLG/IP 带有 Socket API 接口函数,方便用户进行应用层协议的开发。 z 可移植 全部代码由 ANSI C 编写,并且与目标处理器的存储器结构无关(即与无论存储器 是大端结构还是小端结构均不影响程序的执行),方便用户移植到自己的目标系统 中。 z 可固化 ZLG/IP 为嵌入系统设计,如果您有固化手段,它可以嵌入到您的产品中成为产品的 一部分。 z 支持多任务操作系统 基于µC/OS-II 实时多任务操作系统,具有良好的实时性能,所有 Socket API 接口函 数库都可以工作在非阻塞方式。 z 为嵌入系统做过优化 代码可重入, 简易的路由协议处理,可以跨越网关收发数据, 支持 RFC 标准 TCP, TCP 层代码小而且速度快。 z 提供源代码 需要购买源码的用户可以与广州周立功单片机发展有限公司联系。 z 可配置 得到源码的用户可以对一些参数进行配置或裁减代码。 z 基本完整的 TCP 栈支持,TCP 模块处理支持以下功能: (1) 发送确认; (2) 带外数据; (3) 数据重传; (4) 数据校验; (5) 流模式; (6) 连接数目只受内存大小限制。 3.3 已实现的特性 z 支持 TCP, UDP, IP, ICMP, ARP, ETHERNET 等协议; z 兼容 BSD 标准的 Socket API 接口函数库; z ICMP 实现 PING 的功能和 UDP 无效端口返回; - 3 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 支持TCP的流控制和超时重传 支持TCP主动连接和被动连接 支持在多任务中建立多个不同的TCP连接,支持各连接同时收发数据 提供 Websever和UDP服务器范例。 34暂时未实现的特性 IP报的处理不支持分段 在多个网络接口的应用是两个网络间的最大报大小要基本相等 ICMP协议还不是非常完整 目前ICMP协议只支持PING的功能和UDP无效端口返回。 TCP协议不支持紧急数据 这一版本的ZLGP不对TCP传输中的紧急数据报进行处理。 不支持IGMP协议 这一版本的ZLGP不支持IP组播和广播 不支持 Socket api发送函数发送大于PMTU 用 Socket APl发送函数发送数据时,数据长度不可大于一个TCP或UDP报有效数 据的长度 ZLG/P的升级版将逐步解决上述问题 4ZLG|P的结构视图 4.1概述 ZLG/P采用模块化层次结构设计,其结构如图2所示。 TCP/IP应用程序 TCP/IP应用程序 其它应用程序 SOCKET API接口 处理 CP处理} IP处理 ARP处理 发送 ETHERNET接收驱动] ETHERNET发送驱动 网络硬件 注释:(1)实线箭头表示正常调用关系 (2)模块所在水平位置代表其所在的网络层次 (3)灰色模块表示操作系统中的任务
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 z 支持 TCP 的流控制和超时重传; z 支持 TCP 主动连接和被动连接; z 支持在多任务中建立多个不同的 TCP 连接,支持各连接同时收发数据; z 提供 WebSever 和 UDP 服务器范例。 3.4 暂时未实现的特性 z IP 报的处理不支持分段 在多个网络接口的应用是两个网络间的最大报大小要基本相等。 z ICMP 协议还不是非常完整 目前 ICMP 协议只支持 PING 的功能和 UDP 无效端口返回。 z TCP 协议不支持紧急数据 这一版本的 ZLG/IP 不对 TCP 传输中的紧急数据报进行处理。 z 不支持 IGMP 协议 这一版本的 ZLG/IP 不支持 IP 组播和广播。 z 不支持 Socket API 发送函数发送大于 PMTU 用 Socket API 发送函数发送数据时,数据长度不可大于一个 TCP 或 UDP 报有效数 据的长度。 ZLG/IP 的升级版将逐步解决上述问题。 4 ZLG/IP 的结构视图 4.1 概述 ZLG/IP 采用模块化层次结构设计,其结构如图 2 所示。 IP处理 ARP处理 IP发送 ETHERNET接收驱动 ETHERNET发送驱动 UDP 处理 ICMP处理 TCP 处理 TCP/IP应用程序 TCP/IP应用程序 SOCKET API 接口 网络硬件 其它应用程序 注释:(1) 实线箭头表示正常调用关系。 (2) 模块所在水平位置代表其所在的网络层次 (3) 灰色模块表示操作系统中的任务。 - 4 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 图2ZLGP逻辑结构图 42应用程序 TCP/P应用程序是用户自己编写的μCOS任务,是ZLGP的使用者,位于整个程序 的最高层。CPP应用程序调用 ZLG/IP提供的 Socket apl接口函数对网络进行相应的操作 4.3 Socket APl接口 位于TCPP协议与应用程序之间,是用户操作协议栈程序的工具,在应用程序中通过 调用 Socket APl接口函数来对协议栈软件进行操作 44TCP、UDP处理 是协议栈程序中处理传输层协议的模块。负责对传输层的数据进行封装和解拆,保存传 输层连接状态 4.5接收处理 最大的灰框内部的就是接收处理。它包括IP报的处理,ARP报的处理,ICMP报的处 理及以太网层的数据接收驱动。接收驱动模块接收到数据后进行分类,是IP报就IP由处理 模块处理,是ARP报就进行ARP协议处理,是ARP请求报则调用以太网发送模块发送ARP 应答报。是IP处理模块把数据分类分别由ICMP处理模块处理,对TCP或UDP报则转由 上层的传输层模块处理。而ICMP协议处理模块负责对ICMP协议进行, 46IP发送 负责封装P报,并把封装好的P报传送的下层发送模块。IP发送模块有4个上层模块 调用,分别是 Socket APl接口、UDP处理、TCP处理和lCMP处理,他们把相应的参数传 送给P发送模块,由IP发送模块来封装 4.7以太网发送驱动 它是属于以太网层的处理模块,负责封装以太网报和数据的发送。调用它的模块有ARP 处理模块和IP发送模块。 5 Socket aP函数集 51系统配置手册 表2ZLG/P配置 取值范 功能 常量名 所属文件 描述、注意点 AR表的表 MAX ARP TERM1-255 cfg net. h它于网络中的节点数有关,默认是50 项数目 TCP报的最 它是指一帧TCP报可以发送的字节数 大数据长度 MAX TCP DATA cfg net. h 1460 数据 认是1460 TCP的最大 MAX-_TCP_LINKS 1-255 cfg_net.h 同时可以建立的TCP连接数量 连接数 本地MAC My Mac lID cfg net. h默认是0x520×540x4c,0x190x8,0x72 地址 本地IP掩码 IP MARK lID cfg net. h 默认是255,255255,0
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 图 2 ZLG/IP 逻辑结构图 4.2 应用程序 TCP/IP 应用程序是用户自己编写的µC/OS-II 任务,是 ZLG/IP 的使用者,位于整个程序 的最高层。TCP/IP 应用程序调用 ZLG/IP 提供的 Socket API 接口函数对网络进行相应的操作。 4.3 Socket API 接口 位于 TCP/IP 协议与应用程序之间,是用户操作协议栈程序的工具,在应用程序中通过 调用 Socket API 接口函数来对协议栈软件进行操作。 4.4 TCP、UDP 处理 是协议栈程序中处理传输层协议的模块。负责对传输层的数据进行封装和解拆,保存传 输层连接状态。 4.5 接收处理 最大的灰框内部的就是接收处理。它包括 IP 报的处理,ARP 报的处理,ICMP 报的处 理及以太网层的数据接收驱动。接收驱动模块接收到数据后进行分类,是 IP 报就 IP 由处理 模块处理,是 ARP 报就进行 ARP 协议处理,是 ARP 请求报则调用以太网发送模块发送 ARP 应答报。是 IP 处理模块把数据分类分别由 ICMP 处理模块处理,对 TCP 或 UDP 报则转由 上层的传输层模块处理。而 ICMP 协议处理模块负责对 ICMP 协议进行。 4.6 IP 发送 负责封装 IP 报,并把封装好的 IP 报传送的下层发送模块。IP 发送模块有 4 个上层模块 调用,分别是 Socket API 接口、UDP 处理、TCP 处理和 ICMP 处理,他们把相应的参数传 送给 IP 发送模块,由 IP 发送模块来封装。 4.7 以太网发送驱动 它是属于以太网层的处理模块,负责封装以太网报和数据的发送。调用它的模块有 ARP 处理模块和 IP 发送模块。 5 Socket API 函数集 5.1 系统配置手册 表 2 ZLG/IP 配置 功能 常量名 取值范 围 所属文件 描述、注意点 ARP 表的表 项数目 MAX_ARP_TERM 1~255 cfg_net.h 它于网络中的节点数有关,默认是 50 TCP 报的最 大数据长度 数据 MAX_TCP_DATA 1~ 1460 cfg_net.h 它是指一帧 TCP 报可以发送的字节数,默 认是 1460 TCP 的最大 连接数 MAX_TCP_LINKS 1~255 cfg_net.h 同时可以建立的 TCP 连接数量 本地 MAC 地址 My_Mac_1ID cfg_net.h 默认是 0x52,0x54,0x4c,0x19,0xf8,0x72 本地 IP 掩码 IP_MARK_1ID cfg_net.h 默认是 255,255,255,0 - 5 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 本地IP地址 MY IP IID cfg net. h 默认是1921690.174 本地网关地 MY GATEWAY IID cfg net. h 默认是192.169.0.1 系统的操作 分为大端( Big End)和小端( Little end) Little end cfg net. 方式 两种,它与CPU的类型有关,默认是小端 接收缓存区 Hardwear MAX_REC_BUFF1-255 默认为5 的数目 h 是指可以同时控制的以太网接口数目,默认 网络接口数 MAX NET PORT|1~255 thernet h 为1 UDP接收缓 存区的数目 UdpMaxRec 1-255Udph 默认是3 UDP可建立 它的数目是于UDP通讯的 SOCKET数目有 的 SOCKETMAX_UDP_LINKS1-255udph关,它等于UDP通讯的 SOCKET数目就可 数 以了,默认为5 以太网控制 复位脚的管脚号,它与硬件有关在 Hardwear 芯片的复位 NET RST EASY2200板上是P0.6脚,所以 NET RST=OXO0000040 以太网控制 Hardwear 它与硬件有关在EASY2200板上是 芯片的基地| NET BASE ADDR 0X83400000 52 SOCKET AP函数参考手册 表3 socket函数 函数名称 socket( 所属文件| zlg socket.c 函数原型| SOCKET*socket( unti6af, untiE6type,untl6 protocol) 功能描述创建一个 SOCKET 编译开关无 调用者用户任务 函数参数a:保留(0)bpe:通讯类型 protocol:通讯协议 函数返回值创建的 SOCKET结构指针 调用模块无 特殊说明和必须先建立一个 SOCKET结构该函数可用于TCP或UDP通讯任务 注意点 表4bind函数 函数名称 所属文件 zIg socket.c 函数原型 int bind( SOCKET*s, struct sockaddr’name;uint6 namelen) 功能描述对已创建的 SOCKET绑定本地P地址和本地端口 编译开关 调用者用户任务 函数参数 已创建的 SOCKET指针 e:保存IP地址和端口的结构 namelen:name的长度 函数返回值通讯协议:0为TCP通讯,1为UDP通讯 调用模块无
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 本地 IP 地址 MY_IP_1ID cfg_net.h 默认是 192.169.0.174 本地网关地 址 MY_GATEWAY_1ID cfg_net.h 默认是 192.169.0.1 系统的操作 方式 Little_End cfg_net.h 分为大端(Big_End)和小端(Little_End) 两种,它与 CPU 的类型有关,默认是小端 接收缓存区 的数目 MAX_REC_BUFF 1~255 Hardwear. h 默认为 5 网络接口数 MAX_NET_PORT 1~255 Ethernet.h 是指可以同时控制的以太网接口数目,默认 为 1 UDP 接收缓 存区的数目 UdpMaxRec 1~255 Udp.h 默认是 3 UDP 可建立 的 SOCKET 数 MAX_UDP_LINKS 1~255 Udp.h 它的数目是于 UDP通讯的 SOCKET 数目有 关,它等于 UDP 通讯的 SOCKET 数目就可 以了,默认为 5 以太网控制 芯片的复位 脚 NET_RST Hardwear. c 复位脚的管脚号,它与硬件有关在 EASY2200 板上是 P0.6 脚,所以 NET_RST=0X00000040 以太网控制 芯片的基地 址 NET_BASE_ADDR Hardwear. c 它与硬件有关在 EASY2200 板上是 0X83400000 5.2 SOCKET API 函数参考手册 表 3 socket 函数 函数名称 socket() 所属文件 zlg_socket.c 函数原型 SOCKET *socket( uint16 af, uint16 type, uint16 protocol) 功能描述 创建一个 SOCKET 编译开关 无 调用者 用户任务 函数参数 af:保留(0) type:通讯类型 protocol:通讯协议 函数返回值 创建的 SOCKET 结构指针 调用模块 无 特殊说明和 注意点 必须先建立一个 SOCKET 结构;该函数可用于 TCP 或 UDP 通讯任务 表 4 bind 函数 函数名称 bind() 所属文件 zlg_socket.c 函数原型 int bind( SOCKET * s, struct sockaddr * name,uint16 namelen) 功能描述 对已创建的 SOCKET 绑定本地 IP 地址和本地端口 编译开关 无 调用者 用户任务 函数参数 s:已创建的 SOCKET 指针 name:保存 IP 地址和端口的结构 namelen:name 的长度 函数返回值 通讯协议:0 为 TCP 通讯,1 为 UDP 通讯 调用模块 无 - 6 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 特殊说明和如果调用本函数来绑定本地IP和本地端口,系统自动使用默认P和一个空闲的端口;该函 注意点 数可用于TCP或UDP通讯任务 表5 listen函数 函数名称| listen( 所属文件 zlg socket. c 函数原型 int listen( SOCKET* s, uint6 backlog) 功能描述设定TCP服务器需要监听的连接数 编译 「调用者用户的TCP服务器任务 函数参数|:已创建的 SOCKET指针 backlog:需要监听的连接数 函数返回-1:需要监听的连接数比最多可建立的连接数还大 .2: backlog=0 3:已创建的 SOCKET所使用的通讯协议不是TCP协议 -4:需要监听的连接数比可建立的连接数还大 backlog的值:表示设定成功 调用模块 特殊说明只适用于TCP连接 和注意点 accep 函数 函数名称 accepto 所属文件 g socket.c 函数原型| uint8 accept( SOCKET*s, struct sockaddr,adr, int 'addrlen) 功能描述用于TCP服务器确认客户机的连接 编译开关无 调用者 P服务器任务 函数参数|:已创建的 SOCKET指针adr:连接后保存对方的IP和端口 adr的长度 函数返回0xF:没有客户机的连接 返回值小于 MAX TCP LINKS:已经与客户机建立连接,返回值是“连接序号” 调用模块|无 特殊说明只适用于TCP连接,本函数不阻塞,它属于超时退出 和注意点 表7recv函数 函数名称|rvO 所属文件| zlg socket. c 函数原型| untiE6reco( uint8 num, uints8buf, intl6len, int flags) 功能描述TCP通讯连接建立后,读取所得到的数据 编译开关无 调用者 用户的TCP任务 函数参数mum:从 accept0(或 connecto函数)函数获取的“连接序号” buf:接收缓存区起始地址 len:接收的数据长度 fags:保留 函数返回读取的数据长度,为0表示没有数据 调用模块 OSTimeDly(0
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 特殊说明和 注意点 如果调用本函数来绑定本地 IP 和本地端口,系统自动使用默认 IP 和一个空闲的端口; 该函 数可用于 TCP 或 UDP 通讯任务 表 5 listen 函数 函数名称 listen() 所属文件 zlg_socket.c 函数原型 int listen( SOCKET * s, uint16 backlog ) 功能描述 设定 TCP 服务器需要监听的连接数 编译开关 无 调用者 用户的 TCP 服务器任务 函数参数 s:已创建的 SOCKET 指针 backlog:需要监听的连接数 函数返回 值 -1:需要监听的连接数比最多可建立的连接数还大 -2:backlog=0 -3:已创建的 SOCKET 所使用的通讯协议不是 TCP 协议 -4:需要监听的连接数比可建立的连接数还大 backlog 的值:表示设定成功 调用模块 无 特殊说明 和注意点 只适用于 TCP 连接 表 6 accept 函数 函数名称 accept() 所属文件 zlg_socket.c 函数原型 uint8 accept( SOCKET * s, struct sockaddr * addr, int *addrlen ) 功能描述 用于 TCP 服务器确认客户机的连接 编译开关 无 调用者 用户的 TCP 服务器任务 函数参数 s:已创建的 SOCKET 指针 addr:连接后保存对方的 IP 和端口 addrlen:addr 的长度 函数返回 值 0xFF:没有客户机的连接 返回值小于 MAX_TCP_LINKS:已经与客户机建立连接,返回值是“连接序号” 调用模块 无 特殊说明 和注意点 只适用于 TCP 连接,本函数不阻塞,它属于超时退出。 表 7 recv 函数 函数名称 recv() 所属文件 zlg_socket.c 函数原型 uint16 recv( uint8 num, uint8 *buf, uint16 len, int flags ) 功能描述 TCP 通讯连接建立后,读取所得到的数据。 编译开关 无 调用者 用户的 TCP 任务 函数参数 num:从 accept()(或 connect()函数)函数获取的 “连接序号” buf:接收缓存区起始地址 len:接收的数据长度 flags:保留 函数返回 值 读取的数据长度,为 0 表示没有数据 调用模块 OSTimeDly(10); - 7 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 特殊说明只适用于TCP连接,本函数不阻塞,它属于超时退出 和注意点 表8send函数 函数名称|send 所属文件| zlg socket 函数原型 pintle6 send( uint& num,uint8buf, uint16 len, int flags) 功能描述TCP通讯连接建立后,发送数据 编译 调用者 户的TCP任务 函数参数num:从 accept0(或 connect函数)函数获取的“连接序号” buf:发送数据起始地址 en:发送的数据长度(不可大于 MAX TCP DATA, MAX TCP DATA默认是1460个字节) 保留 函数返回发送的数据长度,为0表示发送失败 调用模块| Send Ip frame 特殊说明只适用于TCP连接,本函数不阻塞,超时重发一次,再超时退出 和注意点 表9cose函数 函数名称| close 所属文件 zlg socket. c 函数原型uins8 close(uint8num) 功能描述关断TCP连接 编译开关无 调用者用户的TCP任务 函数参数num:从 accepto函数(或 connecto函数)获取的“连接序号” 函数返回1:正常断开 0:非正常断开 调用模块| Send Ip frame 特殊说明只适用于TCP连接,本函数不阻塞,超时退出。 和注意点 表10 connec函数 函数名称 connecto 所属文件| zlg socket. c 函数原型uins8 connecti( SOCKET*s, struct sockaddr a, addr uint6 addrlen) 功能描述用于TCP主动连接(一般是TCP客户端) 编译开关无 调用者 用户的TCP客户机 任务 函数参数s:已创建的 SOCKET指针adr:对方P地址和端口adln:adr的长度 函数返回|< MAX TCP LINKS:返回创建的“连接序号” MAX TCP LINKS:连接失败返回 MAX TCP LINKS 调用模块| Send Ip frame 特殊说明只适用于TCP客户机连接,本函数不阻塞,超时退出 和注意点 表11 closesocke函数
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 特殊说明 和注意点 只适用于 TCP 连接,本函数不阻塞,它属于超时退出。 表 8 send 函数 函数名称 send() 所属文件 zlg_socket.c 函数原型 uint16 send( uint8 num, uint8 *buf, uint16 len, int flags ) 功能描述 TCP 通讯连接建立后,发送数据。 编译开关 无 调用者 用户的 TCP 任务 函数参数 num:从 accept()(或 connect()函数)函数获取的 “连接序号” buf:发送数据起始地址 len:发送的数据长度(不可大于 MAX_TCP_DATA,MAX_TCP_DATA 默认是 1460 个字节) flags:保留 函数返回 值 发送的数据长度,为 0 表示发送失败 调用模块 Send_Ip_Frame() 特殊说明 和注意点 只适用于 TCP 连接,本函数不阻塞,超时重发一次,再超时退出。 表 9 close 函数 函数名称 close() 所属文件 zlg_socket.c 函数原型 uint8 close(uint8 num) 功能描述 关断 TCP 连接 编译开关 无 调用者 用户的 TCP 任务 函数参数 num:从 accept()函数(或 connect()函数)获取的 “连接序号” 函数返回 值 1:正常断开 0:非正常断开 调用模块 Send_Ip_Frame() 特殊说明 和注意点 只适用于 TCP 连接,本函数不阻塞,超时退出。 表 10 connect 函数 函数名称 connect() 所属文件 zlg_socket.c 函数原型 uint8 connect(SOCKET * s, struct sockaddr * addr,uint16 addrlen) 功能描述 用于 TCP 主动连接(一般是 TCP 客户端) 编译开关 无 调用者 用户的 TCP 客户机 任务 函数参数 s:已创建的 SOCKET 指针 addr:对方 IP 地址和端口 addrlen:addr 的长度 函数返回 值 < MAX_TCP_LINKS:返回创建的“连接序号” MAX_TCP_LINKS:连接失败返回 MAX_TCP_LINKS 调用模块 Send_Ip_Frame() 特殊说明 和注意点 只适用于 TCP 客户机连接,本函数不阻塞,超时退出。 表 11 closesocket 函数 - 8 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 函数名称| closesocketo 所属文件 zlg socket. c 函数原型| int closesocket( SOCKET s) 功能描述删除已建立的 SOCKE 编译开关无 调用者用户任务 函数参数s:已创建的 SOCKET 函数返回1:正确删除 调用模块|无 特殊说明该函数可用于TCP或UDP通讯任务 和注意点 表12 recvfrom函数 数名 ecvfromo 所属文件 zlg socket. c 函数原型| uint16 recvfrom( SOCKET S,,uint8"buf,uint6len, int flags, struct sockaddr *from,untl6 功能描述用于UDP通讯时接收数据 编译开关无 调用者 用户UDP任务 函数参数s:已创建的 SOCKET buf:接收缓存区起始地址 len:接收的数据长度 保留 from:保存发送方的IP地址和端口 froman:from的长度 函数返回接收到的数据的长度 值 调用模块无 特殊说明仅适用与UDP通讯,使用前必须先建立 SOCKET 和注意点 函数名称 sendto( 所属文件 zlg socket.c 函数原型| uint16 sendto( SOCKET S,uint8"buf,uint6len, int flags, struct sockaddr’to, intl6 tolen) 功能描述用于UDP通讯时发送数据 编译开关无 调用者用户UDP任务 函数参数s:已创建的 SOCKET buf:发送数据起始地址 en:发送的数据长度(不大于以太网中的UDP最大数据1478个字节) 保留 to:目标方的IP地址和端口 tolen:to的长度 函数返回发送的数据的长度 调用模块无
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 函数名称 closesocket() 所属文件 zlg_socket.c 函数原型 int closesocket( SOCKET s ) 功能描述 删除已建立的 SOCKET 编译开关 无 调用者 用户任务 函数参数 s:已创建的 SOCKET 函数返回 值 1:正确删除 调用模块 无 特殊说明 和注意点 该函数可用于 TCP 或 UDP 通讯任务 表 12 recvfrom 函数 函数名称 recvfrom() 所属文件 zlg_socket.c 函数原型 uint16 recvfrom( SOCKET s, uint8 *buf, uint16 len, int flags, struct sockaddr *from, uint16 *fromlen ) 功能描述 用于 UDP 通讯时接收数据 编译开关 无 调用者 用户 UDP 任务 函数参数 s:已创建的 SOCKET buf:接收缓存区起始地址 len:接收的数据长度 flags:保留 from:保存发送方的 IP 地址和端口 fromlen:from 的长度 函数返回 值 接收到的数据的长度 调用模块 无 特殊说明 和注意点 仅适用与 UDP 通讯,使用前必须先建立 SOCKET 表 13 sendto 函数 函数名称 sendto() 所属文件 zlg_socket.c 函数原型 uint16 sendto( SOCKET s, uint8 *buf, uint16 len, int flags, struct sockaddr *to, uint16 tolen ) 功能描述 用于 UDP 通讯时发送数据 编译开关 无 调用者 用户 UDP 任务 函数参数 s:已创建的 SOCKET buf:发送数据起始地址 len:发送的数据长度(不大于以太网中的 UDP 最大数据 1478 个字节) flags:保留 to:目标方的 IP 地址和端口 tolen:to 的长度 函数返回 值 发送的数据的长度 调用模块 无 - 9 -
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 特殊说明仅适用与UDP通讯,使用前必须先建立 SOCKET 和注意点
广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 特殊说明 和注意点 仅适用与 UDP 通讯,使用前必须先建立 SOCKET - 10 -