今天给大家介绍的是以太网控制网络单片机W7100A的应用笔记之如何实现TCP通信。
TCP(传输控制协议)是用于控制网络间数据通信的协议。作为组成互联网的主要协议之一,更多的详细内容已经写入IETF(互联网工程任务组)的RFC 793中。TCP是运行于IP层上的协议,它保证了数据的有效传输并且可以按照数据的发送顺序依次进行接收。
因为W7100A单片机支持传输层的TCP协议,所以用户不需要做任何整合就可以直接使用TCP/IP协议。
下面一一给大家做阐述。
1 TCP SOCKET
用户可以在W7100A提供的所有8个SOCKET中使用TCP协议,但是必须首先创建要使用的SOCKET。在创建SOCKET时,需要用到SOCKET号、协议、端口号以及标志位。这篇文档将会介绍什么是TCP协议,以及在使用TCP协议时如何将Sn_MR(TCPIP核心中的SOCKET n模式寄存器)设置为Sn_MR_TCP(0×01)。SOCKET号表示用户可以选择从0到7这8个SOCKET中的任意一个使用。端口号表示TCP协议下用户指定使用的端口。如果上面需要的这些都已经设定好,那么socket()函数就可以自行分配创建一个SOCKET。
由于W7100A单片机的TCP协议支持服务器模式和客户端模式,用户可以任意选择一个模式实现此应用。服务器模式和客户端模式的不同见下图:
<图1.1> TCP 服务器和TCP 客户端
如图1.1所示,TCP服务器模式和客户端模式的过程大致相同。唯一的区别在于打开SOCKET之后,SOCKET状态是监听还是连接。当TCP协议在服务器模式下运行时,服务器处于监听状态等待来自客户端的连接请求。如果TCP协议运行于客户端模式下,客户端将会在连接状态下请求连接服务器。一旦成功建立连接,SOCKET的状态将会变成建立(SOCK_ESTABLISHED,0×17)。SOCKET在点对点建立连接之后仍然可以保持连接状态,从而进行数据交换直到SOCKET关闭。
服务器模式下的SOCKET循环周期是由打开、监听、发送、接收、断开和关闭组成。客户端模式的SOCKET循环周期则是由打开、连接、发送、接收、断开和关闭组成。
1.1 打开(OPEN)
无论是在服务器模式或是客户端模式下,在创建SOCKET时第一步都是打开SOCKET。利用SOCKET()函数设置SOCKET号、协议、端口号以及标志位来创建一个SOCKETn(取第n-1个SOCKET值)。由于使用的是TCP协议,需要将协议设置为Sn_MR_TCP(0×01)。而端口号的设置则取决于是在服务器模式还是客户端模式下。如果是在服务器模式下,服务器会根据当前用户所使用的端口来设置源端口号。但是如果是在客户端模式下,因为目的端口号正在被使用,最好随机选择一个端口号,并每次增加一个数字,直到SOCKET被连接为止。TCP协议的标志位表示‘无延时确认标志位’,一般来说,将该位设置为0。更多关于协议类型、标志位等信息,将会在‘TCPIPCore.h’文件下的‘Sn_MR value’中介绍。
在所有的设置完成之后,通过检查Sn_SR(n)寄存器来查看SOCKETn的状态是否变成SOCK_INIT(0×13)。用户可以通过getSn_SR(SOCKETn)函数来完成Sn_SR(N)寄存器的检查过程。如果SOCKET的状态为SOCK_INIT(0×13),表示SOCKET创建成功;如果没有成功,用户需要重新创建SOCKET。
例1.1 打开SOCKET
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)