I8320 手机网络连接建立方法
2010-11-08 20:33
204 查看
没有找到头文件,根据文档拼凑出来的gprs连接方法。
连接成功后需要把pdp0的dns信息加入/etc/resolv.conf里面,删除默认网关,把pdp0的地址作为默认网关
typedef struct {
int BPrimaryPmpProfile;
int PrimaryPmpProfileID;
char Apn[255];
int BStaticIpAddr;
// NetAddr_t IpAddr;
int BStaticDnsAddr;
int DnsCount;
// NetAddr_t DnsAddr[255];
int pad[1024];
}NetPMProfileInfo_t;
typedef struct {
int Event;
int ProfileId;
int Error;
void * Data;
}NetEventInfo_t;
int PdpConnected=0;
void _network_services_cm_cb(NetEventInfo_t * event_cb)
{
printf("event_cb->Error=%d event_cb->Event=%d/n",event_cb->Error,event_cb->Event);
if(event_cb->Error==0) {
if(event_cb->Event==0) {
PdpConnected=1;
unsigned char * ip_addr=(unsigned char *) event_cb->Data;
char command[1024];
system("route delete default");
sprintf(command,"route add default gw %u.%u.%u.%u/n",ip_addr[0x54],ip_addr[0x55],ip_addr[0x56],ip_addr[0x57]);
printf("%s/n",command);
system(command);
sprintf(command,"echo /"nameserver %u.%u.%u.%u/" > /etc/resolv.conf",ip_addr[0x9c],ip_addr[0x9d],ip_addr[0x9e],ip_addr[0x9f]);
printf("%s/n",command);
system(command);
sprintf(command,"echo /"nameserver %u.%u.%u.%u/" >> /etc/resolv.conf",ip_addr[0xb0],ip_addr[0xb1],ip_addr[0xb2],ip_addr[0xb3]);
printf("%s/n",command);
system(command);
// FILE * file=fopen("/mnt/ums/netinfo","w+");
// fwrite((void *)event_cb->Data,1,1024,file);
// fclose(file);
printf("pdp connected/n");
}
if(event_cb->Event==1) {
PdpConnected=0;
printf("pdp closed/n");
}
}
}
int cm_context_close (void);
static int register_rc=0;
static int profileid=-1;
int cm_context_open (void)
{
NetPMProfileInfo_t profinfo;
int profileid_list[20];
int profile_count=1;
if(register_rc)
cm_context_close();
register_rc=0;
memset(&profinfo,0,sizeof(NetPMProfileInfo_t));
int rc=NetCMClientRegister(_network_services_cm_cb);
printf("register rc=%d/n",rc);
if(rc!=0) {
return 0;
}
rc=NetPMGetDefaultProfileId(&profileid);
printf("get profile id rc=%d profileid=%d/n",rc,profileid);
if(rc!=0) {
NetCMClientDeRegister();
return 0;
}
profileid_list[0]=profileid;
rc=NetCMConnectionOpen(profileid_list,profile_count);
printf("connection rc=%d/n",rc);
if(rc!=0) {
NetCMClientDeRegister();
return 0;
}
PdpConnected=0;
int i=0;
for(i=0;i<10;i++) {
if(PdpConnected==1) break;
sleep(1);
}
rc=NetPMGetDefaultProfileInfo(&profinfo);
printf("profinfo rc=%d/n",rc);
// FILE * file=fopen("/mnt/ums/netinfo","w+");
// fwrite((void *)&profinfo,1,1024,file);
// fclose(file);
#if 0
struct hostent *hostinfo=NetDNSGetHostByName(profileid,"www.szonline.com");
if(hostinfo==NULL) {
printf("could not get host information/n");
}
else {
printf("address=%u.%u.%u.%u/n",hostinfo->h_addr_list[0][0],
hostinfo->h_addr_list[0][1],hostinfo->h_addr_list[0][2],
hostinfo->h_addr_list[0][3]);
}
#endif
register_rc=1;
return 1;
}
int cm_context_close (void)
{
int rc=0;
if(register_rc==0) {
printf("no connection close/n");
return 0;
}
if(PdpConnected) {
rc=NetCMConnectionClose(profileid);
printf("close rc=%d/n",rc);
}
int i=0;
for(i=0;i<10;i++) {
if(PdpConnected==0) break;
sleep(1);
}
rc=NetCMClientDeRegister();
printf("deregister =%d/n",rc);
return 1;
}
连接成功后需要把pdp0的dns信息加入/etc/resolv.conf里面,删除默认网关,把pdp0的地址作为默认网关
typedef struct {
int BPrimaryPmpProfile;
int PrimaryPmpProfileID;
char Apn[255];
int BStaticIpAddr;
// NetAddr_t IpAddr;
int BStaticDnsAddr;
int DnsCount;
// NetAddr_t DnsAddr[255];
int pad[1024];
}NetPMProfileInfo_t;
typedef struct {
int Event;
int ProfileId;
int Error;
void * Data;
}NetEventInfo_t;
int PdpConnected=0;
void _network_services_cm_cb(NetEventInfo_t * event_cb)
{
printf("event_cb->Error=%d event_cb->Event=%d/n",event_cb->Error,event_cb->Event);
if(event_cb->Error==0) {
if(event_cb->Event==0) {
PdpConnected=1;
unsigned char * ip_addr=(unsigned char *) event_cb->Data;
char command[1024];
system("route delete default");
sprintf(command,"route add default gw %u.%u.%u.%u/n",ip_addr[0x54],ip_addr[0x55],ip_addr[0x56],ip_addr[0x57]);
printf("%s/n",command);
system(command);
sprintf(command,"echo /"nameserver %u.%u.%u.%u/" > /etc/resolv.conf",ip_addr[0x9c],ip_addr[0x9d],ip_addr[0x9e],ip_addr[0x9f]);
printf("%s/n",command);
system(command);
sprintf(command,"echo /"nameserver %u.%u.%u.%u/" >> /etc/resolv.conf",ip_addr[0xb0],ip_addr[0xb1],ip_addr[0xb2],ip_addr[0xb3]);
printf("%s/n",command);
system(command);
// FILE * file=fopen("/mnt/ums/netinfo","w+");
// fwrite((void *)event_cb->Data,1,1024,file);
// fclose(file);
printf("pdp connected/n");
}
if(event_cb->Event==1) {
PdpConnected=0;
printf("pdp closed/n");
}
}
}
int cm_context_close (void);
static int register_rc=0;
static int profileid=-1;
int cm_context_open (void)
{
NetPMProfileInfo_t profinfo;
int profileid_list[20];
int profile_count=1;
if(register_rc)
cm_context_close();
register_rc=0;
memset(&profinfo,0,sizeof(NetPMProfileInfo_t));
int rc=NetCMClientRegister(_network_services_cm_cb);
printf("register rc=%d/n",rc);
if(rc!=0) {
return 0;
}
rc=NetPMGetDefaultProfileId(&profileid);
printf("get profile id rc=%d profileid=%d/n",rc,profileid);
if(rc!=0) {
NetCMClientDeRegister();
return 0;
}
profileid_list[0]=profileid;
rc=NetCMConnectionOpen(profileid_list,profile_count);
printf("connection rc=%d/n",rc);
if(rc!=0) {
NetCMClientDeRegister();
return 0;
}
PdpConnected=0;
int i=0;
for(i=0;i<10;i++) {
if(PdpConnected==1) break;
sleep(1);
}
rc=NetPMGetDefaultProfileInfo(&profinfo);
printf("profinfo rc=%d/n",rc);
// FILE * file=fopen("/mnt/ums/netinfo","w+");
// fwrite((void *)&profinfo,1,1024,file);
// fclose(file);
#if 0
struct hostent *hostinfo=NetDNSGetHostByName(profileid,"www.szonline.com");
if(hostinfo==NULL) {
printf("could not get host information/n");
}
else {
printf("address=%u.%u.%u.%u/n",hostinfo->h_addr_list[0][0],
hostinfo->h_addr_list[0][1],hostinfo->h_addr_list[0][2],
hostinfo->h_addr_list[0][3]);
}
#endif
register_rc=1;
return 1;
}
int cm_context_close (void)
{
int rc=0;
if(register_rc==0) {
printf("no connection close/n");
return 0;
}
if(PdpConnected) {
rc=NetCMConnectionClose(profileid);
printf("close rc=%d/n",rc);
}
int i=0;
for(i=0;i<10;i++) {
if(PdpConnected==0) break;
sleep(1);
}
rc=NetCMClientDeRegister();
printf("deregister =%d/n",rc);
return 1;
}
相关文章推荐
- Socket建立网络连接方法
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- 嵌入式设备 以及手机 最新判断网络是否连接成功的最好方法,你值得知道
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- c#与sqlserver建立连接时出现与网络相关的或特定于实例的错误的解决方法
- [非WIFI]三种安卓手机通过电脑连接网络方法
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 一个有用的类,集合了建立、连接热点;获取本机ip和连接此热点的手机的ip地址等方法
- Error:System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误,请检查远程连接是否开启。解决方法
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 禁止手机等非授权设备连接到公司无线网络的方法
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- 网络 客户端 多种方法 建立与服务端的连接 接口:服务器名,IP socket connect
- “在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。”的解决方法
- 一种基于手机网络共享服务的网络连接的方法及手机的制作方法