找回密码
 注册
搜索
查看: 2048|回复: 15

[讨论] MTK网络通信例程

[复制链接]
发表于 2007-9-20 21:11:45 | 显示全部楼层 |阅读模式
void SocketTest(U8* paBuffer)
{
    kal_uint8 val = 1;
kal_int32 nwt_acount_id = 5;
kal_int8  ret;
kal_uint8 addr[4] = {125, 91, 4, 144};
// kal_uint8 addr[4] = {10, 0, 0, 172};
sockaddr_struct server_ip_addr;
    kal_int8 socket_id;

/*初始化Soc*/
#ifndef MMI_ON_HARDWARE_P
    soc_init_win32();
#endif
/* 创建Socket */
socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, nwt_acount_id);
    if (socket_id >= 0)
    {
        if (soc_setsockopt(socket_id, SOC_NBIO, &val, sizeof(val)) < 0)
        {
            UCMAIL_AddDebugLog(-1, "Set socket to nonblock mode error !!");
            return;
        }
        val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;
        if (soc_setsockopt(socket_id, SOC_ASYNC, &val, sizeof(val)) < 0)
        {
            UCMAIL_AddDebugLog(-1, "Set socket to nonblock mode error !!");
            return;
        }
    }
/*连接Socket*/
  server_ip_addr.addr_len = 4;
  server_ip_addr.port = 8094;
  memcpy(server_ip_addr.addr, addr, 4);
     ret = soc_connect(socket_id, &server_ip_addr);
    ret = soc_send(socket_id, "GET / HTTP/1.1\r\nHost: 125.91.4.144\r\nConnection: Close\r\n\r\n", 66, 0);
for(nwt_acount_id=0; nwt_acount_id< 0xFFFFFFF; nwt_acount_id++)
{
}
/*仅作试验,实用要加上阻塞判断与数据收取触发等*/
    if (ret == 66)
    {
  ret = soc_recv(socket_id, paBuffer, 256, 0);
    }
return;
}


这段代码,我在模拟器上面可以联通网络

真机时我把ip改为移动网关的,不行。它会自动拨号,然后说号码无法识别
发表于 2007-9-21 15:55:58 | 显示全部楼层
你的network account id设置错了。
点评回复

使用道具 举报

发表于 2007-10-13 09:37:13 | 显示全部楼层
楼上兄弟,连接移动网关,network account id 应该设置多少?
点评回复

使用道具 举报

发表于 2007-11-14 17:54:02 | 显示全部楼层
WAP上网速度很慢,可能与哪部分有关啊?
点评回复

使用道具 举报

发表于 2007-11-22 12:02:08 | 显示全部楼层
mark!  研究中
点评回复

使用道具 举报

发表于 2007-11-24 12:57:31 | 显示全部楼层
模拟器要是能真的接上网络就好了
点评回复

使用道具 举报

发表于 2007-12-4 16:20:54 | 显示全部楼层
模拟器本来就可以连接网络的啊,他有一套windows的函数实现。
点评回复

使用道具 举报

发表于 2007-12-7 12:30:58 | 显示全部楼层
可是我运行上面的程序,结果连接成功,发送失败,而且在PC上用抓包工具也抓不到???
点评回复

使用道具 举报

发表于 2007-12-7 13:44:25 | 显示全部楼层
socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, nwt_acount_id);
真机
nwt_account_id 设置为14
点评回复

使用道具 举报

发表于 2007-12-10 10:58:15 | 显示全部楼层
要是模拟器呢?
点评回复

使用道具 举报

发表于 2007-12-10 12:50:01 | 显示全部楼层
我也要做MTK Socket的项目,楼主QQ多少?希望有机会和你讨论
点评回复

使用道具 举报

 楼主| 发表于 2007-12-14 14:11:45 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>aromar</I>在2007-12-7 13:44:25的发言:</B>
socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_MMI, nwt_acount_id);
真机
nwt_account_id 设置为14</DIV>


对,这里设置成14就行了,但是要对应于真实手机上面的运营商所用的GPRS帐号。
MTK对应的菜单里面有GSM数据和GPRS数据两项。GSM数据的第一个帐号对应nwt_account_id  0,第二个帐号对应nwt_account_id  1,类推,GPRS帐号跟在GSM的后面。我的手机上GSM有10个帐号,也就是所GPRS的第一个帐号对应的nwt_account_id 是10,而我所用运营商CMGRPS帐号在GPRS里面的第五个,所以nwt_account_id 设置成14就OK了。
写得有点乱,凑合看看。
点评回复

使用道具 举报

发表于 2007-12-15 16:22:50 | 显示全部楼层
比较感兴趣!先Mark一下
点评回复

使用道具 举报

发表于 2007-12-17 18:06:03 | 显示全部楼层
这个很简单的,呵呵
点评回复

使用道具 举报

 楼主| 发表于 2007-12-18 20:26:02 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>huazjxy</I>在2007-12-17 18:06:03的发言:</B>
这个很简单的,呵呵</DIV>


对,比较简单,在懂了之后。
点评回复

使用道具 举报

发表于 2008-4-2 18:29:08 | 显示全部楼层
我也对数据通信比较感兴趣,还不知道从哪里开始呢
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-26 11:07 , Processed in 0.048033 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表