找回密码
 注册
搜索
查看: 2196|回复: 23

[讨论] 哪位老兄用过MTK下的SOCKET编过程序啊

[复制链接]
发表于 2008-2-26 10:56:09 | 显示全部楼层 |阅读模式
我各人写了一段程序,就是想通过手机向一个只定的电脑传送数据,可手机好像根本联不上网,我用卡是全球通卡,手机支持GPRS.以下是代码:
void net1(void)
{
  unsigned char buf[2*1024];
  char len;
  signed char conn;
  sockaddr_struct daddr;
  conn=soc_create(PF_INET, SOCK_STREAM, IPPROTO_IP, MOD_MMI, 14);  
  memset(&daddr,0x00,sizeof(sockaddr_struct));
  daddr.addr_len=4;
  daddr.addr[0] = 192;   
  daddr.addr[1] = 168;
  daddr.addr[2] = 1;
  daddr.addr[3] = 100;
  daddr.port = 9999;
  kal_prompt_trace(MOD_MMI,"NET_Connect: sock_addr,%d,%d,%d,%d,%d",daddr.addr[0],daddr.addr[1],daddr.addr[2],daddr.addr[3],daddr.port);
  soc_connect(conn,&daddr);
  strcpy((char *)buf,"HELLO ");   
  len = strlen((const char *)buf);
// sprintf(buff,"GET%s\r\n\r\n",filepath);
  soc_send(conn,buf, len+7,0);
  soc_close(conn);
  

}
编译后过程没问题,就是下载到手机后,数据发送不成功.只定的电脑收不到数据.求大虾们指点
 楼主| 发表于 2008-2-26 10:58:53 | 显示全部楼层
我是在开机时直接引用上段程序的
点评回复

使用道具 举报

发表于 2008-2-26 11:39:38 | 显示全部楼层
首先申明我是来学习的,对此我并不了解。

同时,我认为手机和pc怎么组成局域网,除非你搭建了内部测试网络,这个IP地址应该是不合法的。
点评回复

使用道具 举报

 楼主| 发表于 2008-2-26 14:38:59 | 显示全部楼层

哪位老兄用过MTK下的SOCKET编过程序啊

为什么说它是不合法的呢?给出证据啊,你要能说服人啊!你的第一句话把第二句话解释的很好
点评回复

使用道具 举报

发表于 2008-2-29 17:27:06 | 显示全部楼层
1. unsigned char buf[2*1024]; 建议初始化
   memset(buff,0,2*1024);  另外建议不要声明超过2K的。MTK平台有此限制
2. 手机联网,走GPRS,但是用户连接的是中国移动的网关
   172.0.0.10
   所以应该是
   sockaddr_struct conn_addr;
   memset(&conn_addr,0x00,sizeof(sockaddr_struct));
  conn_addr.addr_len=4;
  conn_addr.addr[0] = 172;   
  conn_addr.addr[1] = 0;
  conn_addr.addr[2] = 0;
  conn_addr.addr[3] = 10;
  conn_addr.port = 80;
  soc_connect(conn,&conn_addr);
3.当连上中国移动GPRS网关。
   soc_send(conn,buf, len+7,0);
   这样,将你的内容向中国移动网关推,由中国移动网关推向目的地址,也就是192.168.0.100
   在你的buf中要指名指定的电脑IP地址。以192.168.1.100192.168.1.100为例子。利用HTTP协议的POST方法
   POST http://192.168.1.100/
   具体要推送什么内容,请参考HTTP协议  OK?
4你所指名的IP在手机网内确实不存在。
点评回复

使用道具 举报

发表于 2008-3-1 10:46:37 | 显示全部楼层
to aromar:
请问:如果按照你的说法
移动会把数据按照你的意愿发送给指定的IP?
点评回复

使用道具 举报

发表于 2008-3-2 10:07:42 | 显示全部楼层
会。不过你指定的电脑IP必须在网络上注册了。
比如你向新浪推送东西,IP地址也可以是内容 sina.com.cn
如果你想从新浪获得网页内容
那么buf内容应该如下组织(获得新浪主页内容)
  GET   /default.xml HTTP/1.1\r\n
    Host:   sina.com.cn\r\n     
    Connection:   close\r\n   
    \r\n;   
如果想推送内容使用 POST方法。
POST http://sina.com.cn HTTP/1.1\r\n
HOST sina.com.cn\r\n
Connection:    close\r\n
\r\n
Hello World               //此处是要推送的内容。
按照楼主的意思。 应该把http://sina.com.cn 修改为指定的IP地址或者域名就可以了。(这台及其必须能够在网络上被别的机子访问,并且开启HTTP服务。)
中国移动网关会根据buf中的地址,将内容推送到指定地点。
当然,指定电脑向手机发送内容,也得通过中国移动网关走向手机。
点评回复

使用道具 举报

发表于 2008-5-9 15:58:29 | 显示全部楼层
aromar说的好,收藏了。[em08]
点评回复

使用道具 举报

发表于 2008-5-9 17:15:12 | 显示全部楼层
to aromar

    我觉得你的解释不合理.
   1:从你的解释可以看出网络走的是CMWAP;
  
      如果可以这样的话那么,那些手机网络游戏的服务器就没有必要和移动合作了[搭建自己的无限网络服务器--需要移动支持],这样不就可以节省大笔费用?

     纯粹讨论,我对网络也是学习状态,谢谢你的分析:)
点评回复

使用道具 举报

发表于 2008-5-9 23:48:13 | 显示全部楼层
一般cmwap只能连接GPRS网内的IP ,无法通过路由访问Internet。
况且移动对GPRS是有限制的。
另外在速度上,要做一款 终端---代理---服务器。恐怕要求也比较高吧。
点评回复

使用道具 举报

发表于 2008-10-20 00:03:18 | 显示全部楼层
用CMNET应该是可以直接访问Internet的IP地址的,那么这时候的nwt_account_id的值应该是多少呢?
点评回复

使用道具 举报

发表于 2008-10-20 09:06:26 | 显示全部楼层
CMNET应该是5吧。 你看下WAP中的设置,有CMNET和CMWAP。 CMNET从0-9 CMWAP从10-19 看看CMNET中中国移动在哪个,记得好像是5。
点评回复

使用道具 举报

发表于 2008-10-20 10:34:40 | 显示全部楼层
无论用cmwap还是cmnet都是收费的哦。[em02]
点评回复

使用道具 举报

发表于 2008-10-21 15:40:54 | 显示全部楼层
好帖子
点评回复

使用道具 举报

发表于 2008-10-22 19:40:11 | 显示全部楼层
那如果是想下载服务器上的文件,比如,http://221.223.54.34:80/mobile/data_lib/mytest.data,想把mytest.data这个文件里面的内容用socket下下来,应该如何写呢?
点评回复

使用道具 举报

发表于 2009-6-5 11:41:05 | 显示全部楼层
顶一下,虽然不懂,但是觉得很好!哈哈
点评回复

使用道具 举报

发表于 2009-6-5 18:37:48 | 显示全部楼层
学习[em01][em01]
点评回复

使用道具 举报

发表于 2009-6-8 00:34:08 | 显示全部楼层
学习了......
点评回复

使用道具 举报

发表于 2009-7-27 14:27:27 | 显示全部楼层
好帖,学习中。
点评回复

使用道具 举报

发表于 2009-7-27 15:18:56 | 显示全部楼层
[em01]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2025-1-2 01:38 , Processed in 0.059146 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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