UDP协议是传输层,所以需要从上层应用线程中得到数据,我们使用NETCONN API或者是Socket API编程,那么传输的数据经过内核的层层处理,最后调用udp_sendto_if_src()函数进行发送UDP报文 err_t udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif...
而参数NETCONN_MORE则指向上次发送的那个数据段,适用于连续发送数据的情况。。 *5 ERR_OK: 表示查询成功,函数正常返回。 ERR_MEM:内存错误,稍后会重试,重新查询。 ERR_ARG:DNS客户端未初始化或者没有找到合适的主机名。 ERR_VAL:DNS服务器无响应。 *6#define IP4_ADDR (ipaddr, a,b,c,d) \ (ipaddr)-...
ERR_ARG : ERR_OK; if (err == ERR_OK) { LWIP_DEBUGF(SNTP_DEBUG_TRACE, ("sntp_request: current server address is %s\n", ipaddr_ntoa(&sntp_server_address))); sntp_send_request(&sntp_server_address); } else { /* address conversion failed, try another server */ LWIP_DEBUGF(SNTP...
("etharp_query: will not add non-unicast IP address to ARP cache\n")); return ERR_ARG; } /* 按规则找到arp entry进行操作 */ i_err = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD, netif); if (i_err < 0) { /* 没找到能用的arp entry */ LWIP_DEBUGF(ETHARP_DEBUG | LWIP...
ip_addr_ismulticast(ipaddr)) {returnERR_ARG; }/* 查找或新建一个表项 */i = etharp_find_entry(ipaddr, flags);/*若不合法,返回 */if(i <0) {return(err_t)i; }/* mark it stable */arp_table[i].state = ETHARP_STATE_STABLE;//将对应的表项状态改为stable/* 更新这个表项的网络接口...
err_t tcp_server_accept(void *arg, struct tcp_pcb *newpcb,err_t err) { err_t ret_err; struct tcp_server_struct *es; LWIP_UNUSED_ARG(arg); LWIP_UNUSED_ARG(err); tcp_setprio(newpcb,TCP_PRIO_MIN);//设置新创建的pcb优先级
8、void udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, struct ip_addr *addr, u16_t port), void *rev_arg) 说明:设置接收到数据包时调用的回调函数及其参数。 参数:pcb协议控制块;recv回调函数名(地址);rev_arg回调函数参数。
shortage.* - ERR_RTE No route to destination (no gateway to external networks).* - ERR_ARG ...
sys_thread_t sys_thread_new(void (* function)(void *arg), void *arg,int prio) { if(curr_prio_offset 《 LWIP_TASK_MAX){ OSTaskCreate(function,(void*)0x1111, &LWIP_TASK_STK[curr_prio_offset][LWIP_STK_SIZE-1], LWIP_START_PRIO+curr_prio_offset ); ...
void sys_thread_new(void (* thread)(void *arg), void *arg); 在µC/OS II中,没有线程(thread)的概念,只有任务(Task)。它已经提供了创建新任务的系统API调用OSTaskCreate,因此只要把OSTaskCreate封装一下,就可以实现sys_thread_new。需要注意的是LwIP中的thread并没有µC/OS II中优先级的概念,实现...