|
本人在MTK6225 0852上面做了个SOCKET应用,CMNET通信,现发现用神州行的卡可以正常通信,可是插上动感地带的卡一连接机器就白屏重启,希望高手指点一二。
动感地带的卡连接时也是返回SOC_WOULDBLOCK,不同的是MY_socket_notify函数没有反应。甚是不解啊 !
kal_int8 MYsocket_entry()
{
kal_uint8 val=KAL_TRUE;
kal_int8 soc_ret;
//kal_int8 soc_id;
soc_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, APN_id); //14); //TPC_ACCOUNT_ID);
//uart_write(soc_id);
if( soc_id < 0)
{
// uart_write(0x01);
return 0;
}
val=SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;
if(soc_setsockopt(soc_id, SOC_ASYNC, &val, sizeof(val)) <0)
{
//uart_write(0x03);
return 0;
}
val=1;
if(soc_setsockopt(soc_id, SOC_NBIO, &val, sizeof(val)) <0)
{
// uart_write(0x02);
return 0;
}
memset( &CL7202E_ip_addr, 0, sizeof(sockaddr_struct));
MY_ip_addr.addr[0] = IP_Address[0]; //10;
MYip_addr.addr[1] = IP_Address[1]; //0;
MY_ip_addr.addr[2] = IP_Address[2];//0;
MY_ip_addr.addr[3] = IP_Address[3];; //172;
MY_ip_addr.addr_len = 4;
MY_ip_addr.port = IP_PortNo;
MY_ip_addr.sock_type = SOCK_STREAM;
// uart_write(0x1A);
soc_ret = soc_connect(soc_id, &CL7202E_ip_addr);
// uart_write(soc_ret);
//uart_write(0x1B);
if( soc_ret >= 0)
{
// uart_write(0x04);
return soc_ret;
}else if( soc_ret == SOC_WOULDBLOCK) /* 一般此条件都会成立,返回! */
{
//Jx_debug("SOC_WOULDBLOCK!!!\\r\\n");
uart_write(0x05);
SetProtocolEventHandler(MY_socket_notify, MSG_ID_APP_SOC_NOTIFY_IND);
return soc_ret;
}
else
{
soc_close(soc_id);
}
return 0;
}
着急啊 ! |
|