|
楼主 |
发表于 2009-10-28 16:32:13
|
显示全部楼层
以下是引用552333在2009-10-28 15:15:37的发言:
一定是账号问题
能不能说具体点 可以怎么改 我程序中的账号是14,我把14给成非cmwap,打出来的log是不同的,connet都失败。
现在的情况是,connet是成功的,notify也注册了,MOD_SOC也向MOD_MMI发送的MSG_ID_APP_SOC_NOTIFY_IND,但是跑不到我注册的notify。
代码 如下:
if (trans_type == TRANS_TYPE_TCP)
transport->socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, __NET_ACCOUNT_ID);
if (transport->socket_id < 0){
___log("soc_create failed:%d", transport->socket_id);
return -3;
}
lval = 1;
ret = soc_setsockopt(transport->socket_id, SOC_NBIO, &lval, sizeof(lval));
if (ret<0)
{
___log("socket_id %d set nonblocking mode failed,err_ret:%d", transport->socket_id, ret);
return -4 ;
}
lval =SOC_READ|SOC_WRITE|SOC_CLOSE|SOC_CONNECT; //meaningless ???
ret = soc_setsockopt(transport->socket_id ,SOC_ASYNC,&lval ,sizeof(lval));
if (ret<0)
{
___log("socket_id %d set async mode failed, err_ret:%d", transport->socket_id, ret);
return -5;
}
memcpy(transport->server_ip_addr.addr, &peer_ip, sizeof(peer_ip));
___log("peer_id: %d %d %d %d", transport->server_ip_addr.addr[0], transport->server_ip_addr.addr[1],
transport->server_ip_addr.addr[2], transport->server_ip_addr.addr[3]);
transport->server_ip_addr.port = peer_port;
transport->server_ip_addr.addr_len = 4 ;
con_result = soc_connect(transport->socket_id, &transport->server_ip_addr);
___log("socket_id:%d 's connection result%d", transport->socket_id, con_result);
if (con_result == SOC_SUCCESS) {
___log("socket_id:%d connection successed", transport->socket_id);
transport->connected_handler(transport);
SetProtocolEventHandler(ah_sock_notify_handler, MSG_ID_APP_SOC_NOTIFY_IND);
//transport->req = idx+1;
transport->valid_flag = 1;
return 0;
}
else
{
if (con_result == SOC_WOULDBLOCK)
{
SetProtocolEventHandler(ah_sock_notify_handler, MSG_ID_APP_SOC_NOTIFY_IND);
transport->valid_flag = 1;
return 0;
}
else
{
___log("socket_id %d connect failed", transport->socket_id);
transport->error_handler(transport);
transport->valid_flag = 1; //to do: bug
return -6;
}
}
} |
|