TCP/IP协议栈Lwip的设计与实现:之六

      最后更新:2022-07-22 01:25:36 手机定位技术交流文章

      参考文献:TCP/IP Stack Lwip的设计与实现:五年历史的红龙博客 - CSDN Blog

      目录

      16.网络连接函数

      16.0.14 netconn_new()

      16.0.15 netconn_delete()

      16.0.16 netconn_type()

      16.0.17 netconn_peer()

      16.0.18 netconn_addr()

      16.0.19 netconn_bind()

      16.0.20 netconn_connect()

      16.0.21 netconn_listen()

      16.0.22 netconn_accept()

      16.0.23 netconn_recv()

      16.0.24 netconn_write()

      16.0.25 netconn_send()

      16.0.26 netconn_close()

      16.网络连接函数

      16.0.14 netconn_new()

      函数原型:

      函数说明:

      创建一个新的连接的抽象数据结构。参数可以是NETCONN_TCP或者NETCONN_UDP之一,相应的就为一个TCP连接或一个UDP连接。通过调用该函数没有连接建立也没有数据通过该网络发送。

      16.0.15 netconn_delete()

      函数原型:

      函数说明:

      释放netconn conn。 如果连接打开,函数的调用也将关闭它。

      16.0.16 netconn_type()

      函数原型:

      函数说明:

      返回连接conn的类型。此类型与netconn_new, netconn_TCP或 netconn_UDP中的参数类型相同。

      16.0.17 netconn_peer()

      函数原型:

      函数说明:

      函数netconn_peer()被用来获得一个连接的远程终端的IP地址和端口。参数addr和port是结果参数,它由函数来设定。如果连接conn没有连到任何远程主机,则结果就是不确定的。

      16.0.18 netconn_addr()

      函数原型:

      函数说明:

      该函数用于获取连接konn的本地IP地址和端口号码。

      16.0.19 netconn_bind()

      函数原型:

      函数说明:

      绑定连接konn到本地IP地址添加器和TCP或UDP端口端口。 如果添加器是NULL,则本地IP地址由网络系统确定。

      16.0.20 netconn_connect()

      函数原型:

      函数说明:

      在为UDP的情况下,使用通过连接发送的UDP消息的remote_addr和remote_port来设置远程接收者。对于TCP,netconn_connect()打开一个与远程主机的连接。

      16.0.21 netconn_listen()

      函数原型:

      函数说明:

      设置TCP连接konn到TCP LISTEN状态。

      16.0.22 netconn_accept()

      函数原型:

      函数说明:

      在远程主机上的连接请求到达TCP连接konn之前,该过程被封锁。连接必须在LISTEN状态下,因此,netconn_listen()必须在netconn_accept()之前调用。当与远程主机建立连接时,返回一个新的连接结构。

      使用举例:

      这个例子显示如何在200 port上打开一个TCP服务

      16.0.23 netconn_recv()

      函数原型:

      函数说明:

      阻塞进程直到等待的数据到达链路conn。如果连接已经被远程主机关闭了,就返回NULL,否则,一个包含有接收到的数据的netbuf就被返回。

      使用举例:

      这是一个使用netconn_recv函数的小例子,我们假设连接已经建立。

      16.0.24 netconn_write()

      函数原型:

      函数说明:

      此功能仅用于TCP连接。它将数据指向数据指针放在TCP连接的输出队列上。数据的长度由参数镜头给出,数据的长度没有限制。该函数不需要应用程序明确分配缓冲区,因为有很多协议可以考虑这些。旗号参数有两个可能的状态,如下:

      #define NETCONN_NOCOPY 0x00

      #define NETCONN_COPY    0x01

      当传输的旗号参数是NETCONN_COPY时,数据被复制到分配给数据的内部缓冲区。这允许在调用后直接修改数据,但它在执行时间和记忆使用方面都无效。如果旗号是NETCONN_NOCOPY,数据不会被复制,而是会被引用。电话后,必须保证数据不会被修改,因为数据可以放在连接的继电器队列上,还有一个不确定的时刻待在那儿。当数据被发送到ROM时,这是非常有用的,因此是不可变的。

      如果需要大量基于数据变异的控制,可以使用复制和非复制的数据组合,如下面的例子所示。

      使用举例:

      这个例子显示了netconn_write()的基本使用。变量数据假设程序更改后,因此,通过传递NETCONN_COPY旗到netconn_write(),它可以被复制到内部缓冲区。变量文本包含一个不需要更改的字符串。因此, 应以参考而不是复制的方式发送.

      16.0.25 netconn_send()

      函数原型:

      函数说明:

      在UDP连接konn上发送 netbuf buf数据.netbuf的数据不应该太大,因为不使用IP分解。数据不应超过输出网络接口的最大传输单元(MTU)。既然目前没有办法得到这个价值,因此,我们应该采取谨慎的策略,netbuf不应包含超过100字节的数据。

      没有检查数据是否足够小,发送非常大的网络错误会导致不确定的结果。

      使用举例:

      这个例子显示如何将一些UDP数据发送到与IP地址的远程主机UDP700端口

      16.0.26 netconn_close()

      函数原型:

      函数说明:

      关闭连接conn。

      TCP/IP协议栈Lwip的设计与实现:之七_龙赤子的博客-CSDN博客

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30313.html

          热门文章

          文章分类