接触contiki一段时间了,但是苦于资料比较少,而且基本上都是入门级别的资料,所以学习起来非常的吃力。于是只能拿官方的实例代码进行剖析。对于udp-client.c这个文件先进行分析。
首先看一下整个的流程。
PROCESS_THREAD(udp_client_process, ev, data)
{
static struct etimer et;//定时器
uip_ipaddr_t ipaddr;//地址
PROCESS_BEGIN();
PRINTF("UDP client process started\n");
#if UIP_CONF_ROUTER
set_global_address();
#endif
print_local_addresses();//打印所有本地可用的地址
static resolv_status_t status = RESOLV_STATUS_UNCACHED;
while(status != RESOLV_STATUS_CACHED) {
status = set_connection_address(&ipaddr);//设定连接的远端IP地址
/* 处理一些异常情况*/
if(status == RESOLV_STATUS_RESOLVING) {
PROCESS_WAIT_EVENT_UNTIL(ev == resolv_event_found);
} else if(status != RESOLV_STATUS_CACHED) {
PRINTF("Can't get connection address.\n");
PROCESS_YIELD();
}
}
/* new connection with remote host 这里和普通的socket编程一样,先申请一个connÿ