赞
踩
函数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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。