在上周的博文里,我们介绍了API函数以及TCPIPCore初始化的前半部分内容,接下来,我们继续为大家介绍最后一部分内容,希望对大家有所帮助。
5.4 socket.c
socket():这个函数会根据协议打开相对应的socket,同时将SOCKET与端口号连接。可以独立的创建这8个SOCKET。如果用户开启两个或者更多个相同的协议和相同的端口号,就会影响正常的通信。在这种情况下,数据将会先进入较小的socket号。
connect():该函数尝试与客户端连接。为了能够和客户端连接,必须要保证客户端的IP地址以及端口号输入正确。如果用户执行于TCP客户端模式下,在重新连接的过程中,需要更改本地端口号。如果用户在尝试连接之前,没有进行正常的禁止,那么来自于服务器的存取就会被拒绝。这是因为socket的信息一直都没有发生改变,仍然和之前与服务器绑定在一起。正因为如此,用户需要用另外一个不同的端口号重新打开socket(‘socket()’函数)。
sendto():该函数用于指定的socket下, 向主机发送UDP、IPRAW和MACRAW数据。这它一般在无连接传输模式协议下使用,所以将会增加两个参数,这两个参数都包含目的地信息。为了能够利用这个函数发送数据,用户应该输入参数‘addr’和参数‘port’。‘addr’指示目的IP地址,‘port’指示目的端口号。这个函数读取TX写指针,并且将数据复制到发送缓存器中,然后指针根据数据长度增加相应的值。在使用IPWRAW同MACRAW socket的时候,有几个参数是可以忽略的。
recv():该函数用于指定的socket下,接收已经建立连接的主机发来的TCP数据。它只用在TCP模式下。在UDP模式下,用户应该使用recvfrom()函数。这个函数的功能是读取RX读指针的值,并且从接收缓存器中复制数据。指针根据数据的长度增加相应的值。
recvfrom():该函数用在指定的socket下,接收来自主机的UDP、IPRAW以及MACRAW数据。这它一般在无传输连接模式协议下使用,所以将会增加两个参数,这两个参数都包含目的地信息。当用户利用这个函数接收数据时,可以同时获取对端的信息。这个函数读取RX读指针的数据,并且复制来自接收缓存器的数据。指针会根据数据的长度增加相应的值。在IPRAW和MACRAW socket中,一些参数可以忽略。
这是本文的剩余内容,希望对大家有所帮助。欢迎大家的留言讨论。
更多有关W7100A产品信息,可参考我写的以下博文:
感兴趣的朋友也可以在博客主页观看我们的 WIZnet相关视频栏目。
没有评论:
发表评论