|
这两天小弟想用MODIS先连接一下网络,试试看能否通。大致的步骤如下(省略出错处理部分):
memset(&addr, 0, sizeof(sockaddr_struct));
soc_init_win32();
sock_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, 10);
soc_setsockopt(sock_id, SOC_NBIO, &val, sizeof(val));
val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;
soc_setsockopt(sock_id, SOC_ASYNC, &val, sizeof(val));
ret_val = soc_gethostbyname(KAL_FALSE, MOD_MMI, 5, "www.baidu.com", addr.addr, &addr.addr_len, 0, 10);
if (ret_val == SOC_WOULDBLOCK)
{
gui_print_text(L"SOC_WOULDBLOCK..............");
SetProtocolEventHandler(connect_response, MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND);
return;
}
回调函数如下:
void connect_response(void *msg)
{
app_soc_get_host_by_name_ind_struct *dns_ind;
gui_move_text_cursor(0, UI_device_height / 2);
dns_ind = (app_soc_get_host_by_name_ind_struct *) msg;
if(NULL != dns_ind && dns_ind->result == KAL_TRUE)
{
gui_print_text(L"ok");
}
}
ret_val的返回值一直是SOC_WOULDBLOCK,回调函数也没有抓到消息。
请问我的连接步骤是否存在问题?谢谢大虾指教! |
|