(完整word版)LWIP总结,推荐文档.doc
int lwip_socket(int domain, int type, int protocol)创建通讯用的“插口”(插口socket可以理解为IP地址和端口号组合成的地址),创建成功返回ID(出错返回-1).参数:domain:协议簇(AF_UNIX是UNIX,AF_INET是IPv4协议,AF_ROUTE)type : SOCK_STREAM是TCP、SOCK_DGRAM是UDP、SOCK_RAW是RAM活IPv4protocol: 为0int lwip_setsockopt(int s, int level, int optname, const void *optval, socklent optlen)该函数是用来改变插口的模式,这种改变是通过修改插口选项实现的。参数:s: 表示插口ID,即使用lwip_socke()函数创建socket之后返回的那个值。level: 协议栈选项,包括SOL_SOCKET(插口层)、IPPROTO_TCP(TCP层)和IPPROTO_IP(IP层);optname:需要修改的选项名。optval: 修改值的地址optlen:修改值的长度返回0表示成功struct lwip_sock /当前的sockets是以网络连接为基础,每一个socket都有一个网络连接struct netcon *conn;/上一次读的数据void *lastdata;/上一次读的数据偏移u16_t lastoffset;/每个时间内收到的数据量,使用event_callback()函数设置,测试接收和选中功能s16_t rcvevent;/每个时间内的数据应答(发送buff为空),使用event_callback()函数设置,测试选中u16_t sendevent;/这个socket发送了错误,使用event_callback()函数设置,测试选中u16_t errevent;/在这个socket最后发生的错误int err;/有多少个线程正在等待这个socket选中int select_waiting;/*一个任务在选中中等待struct lwip_select_cb /指向下一个等待的任务struct lwip_select_cb *next;/指向上一个等待的任务struct lwip_select_cb *prev;/读取选中租fd_set *readset;/写入选中组fd_set *writeset;/未实现:除了转到选中组fd_set *exceptset;int sem_signalled;sys_sem_t sem;