为什么我在so_cconnect时为什么进不了notify的钩子函数,但是在解析域名时又能进那个钩子函数。
求高人指导,很奇怪就是不进那个notify函数 但是在解析域名的时候又能进解析域名的钩子函数,想来想去两者只有MSG_ID_APP_SOC_NOTIFY_IND不同,请问怎样才能让它进notify函数,不然以后都进不去,就数据也没法发送也没法接收了。
代码如下:
static kal_uint8 Soc_Notify( void *pinMsg )
{
app_soc_notify_ind_struct *soc_notify = (app_soc_notify_ind_struct*) pinMsg;
printf("\n\n In Notify \n\n");
if(soc_notify->socket_id != ER_Soc.socket_id)
{
printf("\n\n Socket id No Sam \n\n");
return 0;
}
else
{
printf("\n\n Socket id Sam \n\n");
}
printf("\n\n soc_notify->event_type = %d \n\n", &(soc_notify->event_type));
switch (soc_notify->event_type)
{
case SOC_WRITE:
break;
case SOC_READ:
break;
case SOC_CONNECT:
if( soc_notify->result == KAL_TRUE )
{
printf("\n\n Connect True \n\n");
//send request
}
else
{
printf("\n\n Connect error \n\n");
}
break;
default:
printf("\n\n event_type error \n\n");
}
return 1;
} //end Soc_Notify
MMI_BOOL Soc_Connect(int s, unsigned int *addr, int addrlen, int port)
{
sockaddr_struct sAddr;
int ret = 0;
kal_int8 sock_id = s;
kal_int16 addr_len = addrlen;
memset(&sAddr, 0, sizeof(sockaddr_struct));
// memcpy(sAddr.addr, addr,addr_len);
sAddr.addr[0]=202;
sAddr.addr[1]=108;
sAddr.addr[2]=22;
sAddr.addr[3]=103;
sAddr.port = port;
sAddr.addr_len = addr_len;
sAddr.sock_type = SOC_SOCK_STREAM;
ret = soc_connect(sock_id, &sAddr);
if( ret == SOC_SUCCESS )
{
// send request
printf("\n\n Connect Ok \n\n");
return KAL_TRUE;
}
else
if( ret == SOC_WOULDBLOCK )
{
printf("\n\n In Connect Notify \n\n");
mmi_frm_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)ER_Soc_Notify, MMI_TRUE);
printf("\n\n Out Connect Notify \n\n ");
return KAL_TRUE;
}
else
{
printf("\n\n Connect Fail \n\n");
return KAL_FALSE;
}
} //end ER_Soc_Connect