当前位置:   article > 正文

lwip协议栈实现服务器端主动发送,API函数及编程实例《LwIP协议栈源码详解—TCP/IP协议的实现》...

lwip netconn服务器主动发送数据

函数netconn_new用来创建一个新的连接结构。连接结构的类型可以选择为TCP或UDP等。函数结构原型如下所示,参数type描述了连接的类型,可以为NETCONN_TCP或NETCONN_UDP等,这里都以TCP作为讨论的对象。

struct netconn* netconn_new(enum

netconn_type type)

该函数首先调用netconn_alloc函数分配并初始化一个netconn结构。初始化的过程包括设置netconn结构类型字段,同时为该结构的op_completed创建一个信号量、recvmbox字段创建一个接收邮箱。奇怪的是netconn_alloc函数并不是在文件api_lib.c文件中,而是在api_msg.c中,凌乱!接下来函数netconn_new会构建一个api_msg消息,该消息要求内核执行函数do_newconn,最后函数tcpip_apimsg用来将消息包装成tcpip_msg结构并发送出去。tcpip_thread函数解析该消息并调用函数do_newconn,do_newconn根据参数的类型最终调用函数tcp_new创建一个TCP控制块。tcpip_apimsg会阻塞在一个信号量上,直至do_newconn释放该信号量。

函数netconn_delete用来删除一个连接结构netconn。与前面的流程相同,它通过消息告诉内核执行do_delconn,调用tcp_close函数关闭TCP连接。而后netconn_delete调用netconn_free函数释放netconn结构的空间。注意这里的netconn_free函数netconn_alloc函数一样,也不是在文件api_lib.c文件中,而是在api_msg.c中,尽管他们都是netconn_xxx结构。

netconn_bind用于将一个IP地址及端口号与结构netconn绑定。事实上&#x

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/146963
推荐阅读
相关标签
  

闽ICP备14008679号