![網(wǎng)絡(luò)通信流程_第1頁](http://file4.renrendoc.com/view/3fcfb2858b079bc4fe64c5c5d197329d/3fcfb2858b079bc4fe64c5c5d197329d1.gif)
![網(wǎng)絡(luò)通信流程_第2頁](http://file4.renrendoc.com/view/3fcfb2858b079bc4fe64c5c5d197329d/3fcfb2858b079bc4fe64c5c5d197329d2.gif)
![網(wǎng)絡(luò)通信流程_第3頁](http://file4.renrendoc.com/view/3fcfb2858b079bc4fe64c5c5d197329d/3fcfb2858b079bc4fe64c5c5d197329d3.gif)
![網(wǎng)絡(luò)通信流程_第4頁](http://file4.renrendoc.com/view/3fcfb2858b079bc4fe64c5c5d197329d/3fcfb2858b079bc4fe64c5c5d197329d4.gif)
![網(wǎng)絡(luò)通信流程_第5頁](http://file4.renrendoc.com/view/3fcfb2858b079bc4fe64c5c5d197329d/3fcfb2858b079bc4fe64c5c5d197329d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
MTK網(wǎng)絡(luò)通信詳解先這里說一下MTK的通信流程,一些新人還是對這個(gè)不熟悉的。其實(shí)這個(gè)和PC機(jī)的通信差不多,大同小異。PC機(jī)上是直接send發(fā)送數(shù)據(jù)的,而MTK是發(fā)送數(shù)據(jù)時(shí)要加一個(gè)HTTP頭再發(fā)送出去,這就是傳說中的CMWAP模式通信,與CMWAP并列的是CMNET通信,這里先不詳講CMWAM與CMNET了,后面弄個(gè)專題。這張流程圖,CSDN不知道怎么回事不能上傳呆會(huì)給個(gè)URL下面來詳細(xì)介紹下這些函數(shù)及注意事項(xiàng)kal_int8soc_create(kal_uint8domain,socket_type_enumtype,kal_uint8protocol,module_typemod_id,kal_uint32nwk_account_id);比如1)kal_uint32nwk_account_id=10;soc_create(PF_INET,SOCK_STREAM,0,MOD_MMI,nwt_acount_id);這里關(guān)鍵是nwt_acount_id這個(gè)值,很多MTKer都不知道這個(gè)值該填什么,一般情況下填10,因?yàn)?0在MTK手機(jī)里設(shè)置的10代表著中國移動(dòng),如果是CMNET通信的話就就填14了,如今的MTK手機(jī)都已經(jīng)很牛X了,支持雙卡雙待。這時(shí)又得說明當(dāng)前是通信是想有卡1還是卡2去通信,因?yàn)椴煌目╪wt_acount_id又不一樣,所以在soc_create之前得區(qū)分當(dāng)前卡是卡1還是卡2。2)kal_int8soc_setsockopt(kal_int8s,kal_uint32option,void*val,
kal_uint8val_size);3)U32vail=SOC_READISOC_WRITEISOC_CLOSEISOC_CONNECT;soc_setsockopt(socketid,SOC_ASYNC,&val1,sizeof(val));把socketid的設(shè)置成異步,選項(xiàng)有SOC_READ,SOC_WRITE,SOC_CLOSE,SOC_CONNECT。4)U32val=1;soc_setsockopt(socketid,SOC_NBIO,&val,sizeof(val));把socketid設(shè)置成非阻塞setProtocolEventHandler(soc_app_socket_notify,MSG_ID_APP_SOC_NOTIFY_IND);設(shè)置消息的觸發(fā)消息響應(yīng)函數(shù),當(dāng)有val1的類型的觸發(fā)消息時(shí)會(huì)自動(dòng)調(diào)用soc_app_socket_notify這個(gè)函數(shù)。kal_int8soc_connect(kal_int8s,sockaddr_struct*addr);typedefstruct{socket_type_enumsock_type;kal_int16addr_len;kal_uint16 port;/*Forkeepthe4-byteboundary*//*pleasedonotdeclareothervariablesaboveaddr*/kal_uint8addr[MAX_SOCK_ADDR_LEN];}sockaddr_struct;CMWAP通信時(shí),手機(jī)端需要首先連接移動(dòng)網(wǎng)關(guān)才能進(jìn)行網(wǎng)絡(luò)通信,這里需要填充結(jié)構(gòu)體sockaddr_struct的addr及port成員,
sockaddr_structsockaddr={0};sockaddr.addr[0]=10;sockaddr.addr[0]=0;sockaddr.addr[0]=0;sockaddr.addr[0]=172;sockaddr.addr_len=4sockaddr.port=80;如果是CMNET通信時(shí)就IP及端口填自己要訪問的服務(wù)器IP{byte1,byte2,byte3,byte4}及地址server_portsockaddr_structsockaddr={0};sockaddr.addr[0]=byte1;sockaddr.addr[1]=byte2;sockaddr.addr[2]=byte3;sockaddr.addr[3]=byte4;sockaddr.addr_len=4sockaddr.port=server_port;到這里連接請求已經(jīng)發(fā)送出去了。接著會(huì)有服務(wù)器發(fā)一個(gè)連接響應(yīng),也就是通知我服務(wù)器已經(jīng)接到你客戶端的連接請求,這里在客戶端也就會(huì)觸發(fā)我們先前設(shè)置的SOC_CONNECT消息,并由soc_app_socket_notify來響應(yīng)這個(gè)事件.這是原型voidsoc_app_socket_notify(void*inMsg);而inMsg指向的是app_soc_notify_ind_struct這么一個(gè)結(jié)構(gòu)體
typedefstructkal_uint8ref_count;kal_uint16msg_len;kal_int8socket_id;/*socketID*/soc_event_enumevent_type;/*soc_event_enum*/kal_boolresult;soc_error_enumerror_cause;/*usedonlywhenEVENTisclose/connect*/kal_int32detail_cause;/*refertops_cause_enumiferror_causeis*SOC_BEARER_FAIL*/}app_soc_notify_ind_struct;/*event*/typedefenum{SOC_READ=0x01,SOC_WRITE=0x02,SOC_READ=0x01,SOC_WRITE=0x02,SOC_ACCEPT=0x04,SOC_CONNECT=0x08,SOC_CLOSE=0x10/*Notifyforread*//*Notifyforwrite*//*Notifyforaccept*//*Notifyforconnect*//*Notifyforclose*/}soc_event_enum;
}soc_event_enum;/*Socketreturncodes,negativevaluesstandforerrors*/typedefenum{soc_-SUCCESS=0,soc__ERROR=-1,SOC__WOULDBLOCK=-2,SOC_丄IMIT_RESOURCE=-3,/*limitedresource*/SOC__INVALID_SOCKET=-4,/*invalidsocket*/SOC__INVALID_ACCOUNT=-5,/*invalidaccountid*/SOC__NAMETOOLONG=-6,/*addresstoolong*/SOC__ALREADY=-7,/*operationalreadyinprogress*/SOC__OPNOTSUPP=-8,/*operationnotsupport*/SOC__CONNABORTED=-9,/*Softwarecausedconnectionabort*/SOC__INVAL=-10,/*invalidargument*/SOC__PIPE=-11,/*brokenpipe*/SOC__NOTCONN=-12,/*socketisnotconnected*/SOC__MSGSIZE=-13,/*msgistoolong*/SOC__BEARER_FAIL=-14,/*bearerisbroken*/SOC__CONNRESET=-15,/*TCPhalf-writeclose,i.e.,FINED*/SOC__DHCP_ERROR=-16,SOC__IP_CHANGED=-17,SOC__ADDRINUSE=-18,
SOC_CANCEL_ACT_BEARER=-19 /*canceltheactivationofbearer*/}soc_error_enum;在這里app_soc_notify_ind_struct里會(huì)經(jīng)常捕捉到錯(cuò)誤的SOC_CONNECT消息,這時(shí)app_soc_notify_ind_struct里的result為KAL_FALSE,soc_error_enum為-14(SOC_BEARER_FAIL),表示建立連接失敗。分析了原因,有以下幾個(gè)原因,一、soc_create時(shí)的nwk_conunt_id弄錯(cuò)了,二、soc_connect的IP和端口弄錯(cuò)了,三、手機(jī)卡,沒話費(fèi)了,四、手機(jī)卡沒有開通GPRS。7)發(fā)送數(shù)據(jù)僅有當(dāng)SOC_CONNECT消息正常觸發(fā),且擁有正確的值時(shí)就可以直接soc_send了kal_int32soc_send(kal_int8s,kal_uint8*buf,kal_int32len,kal_uint8flags)egS32ret=0;charbuf[1024*20]={0};http_get_buf(buf);ret=soc_send(socketid,buf,strlen(buf),0);8)如果發(fā)送成功的話,這里有一個(gè)SOC_RECV三番五次來造訪我們的soc_app_socket_notify函數(shù),我們也別客氣。開始接收數(shù)據(jù)kal_int32soc_recv(kal_int8s,kal_uint8*buf,kal_int32len,
kal_uint8flags)egS32ret=0;charbuf[1024*20]={0};ret=soc_recv(socketid,buf,1024*20,0);9)最后接收完了就可以關(guān)閉socket了soc_close(socketid);MTK平臺下使用socket實(shí)現(xiàn)http通訊收藏2010-03-0603:19移動(dòng)代理服務(wù)器IP:72port:80MTKsocket接口soc_create創(chuàng)建socket接口soc_setsockopt設(shè)置socketoptionsoc_connect建立連接,在這里連接的對像是代理服務(wù)器72soc_send發(fā)送信息recv一■recv一■所以我非阻塞模式,手機(jī)平臺通訊都是非阻塞模式,因此soc_connect和soc_般不會(huì)馬上返回成功,而是返回S0C_W0ULDBL0CK.意思是要等待一會(huì)兒,.們要調(diào)用SetProtocolEventHandler來設(shè)置回調(diào)函數(shù).http格式一個(gè)的HTTP請求格式如下:
GETHTTP/l.l\r\nHost:\r\nProxy-Connection:Keep-Alive\r\n\r\nGET后面是請求的文件,Host后面是請求的域名.每行都以\r\n結(jié)束.最后還必須有一個(gè)空行.一般情況下請求包只有包頭,沒有包體.一個(gè)的HTTP響應(yīng)消息格式如下:HTTP/1.1200OK[ZTE0SE]\r\nServer:ZTEOSE\r\nDate:Tue,15Jul200804:50:08GMT\r\nServer:WebLogicServer8.1SP3TueJun2923:11:19PDT2004404973withCRs:\r\nSet-Cookie:jid二L8sQcQ71W0!225012077;path二/\r\nContent-Length:494\r\nContent-Type:text/vnd.wap.wml;charset二UTF-8\r\n\r\n(數(shù)據(jù)????)通常,移動(dòng)響應(yīng)的第一個(gè)包是重定向,如下所示:<?xmlversion二"1.0"?><!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http:///DTD/wml1.1.xml"><wml><head><metahttp-equiv二"Cache-Control"content二"max-age=0"forua="true"/><metahttp-equiv二"Cache-Control"content二"no-cache"forua="true"/><metahttp-equiv二"Cache-Control"content二"must-revalidate"forua="true"/></head><cardid="card"title=""><oneventtype="onenterforward"><gohref二":80/?t=08458"></go></onevent></card></wml>其中:80/?t=08458就是要重定向的URL,客戶端接到這個(gè)包之后要重新發(fā)一個(gè)請求包,而且把GETHTTP/1.1\r\n改成:GET:80/?t=08458HTTP/1.1\r\n之后就能得到想要的數(shù)據(jù)了.
〃#define URLO "POST /HTTP/l.l\\r\\nX-Online-Host::80\\r\\nKeep-Alive:close\\r\\nContent-Length:3\\r\\n\\r\\nabc"http://#define URL0 "POST /mvc HTTP/1.0\\r\\nAccept: text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*\\r\\nAccept-Language:zh-tw,en-us,en\\r\\nAccept-Encoding:gzip, deflate\\r\\nUser-Agent:Mozilla/4.0\\r\\nContent-Type:application/x-www-form-urlencoded\\r\\nHost:54:80Content-Length:404\\r\\nKeep-Alive:300\\r\\nConnection:Keep-Alive\\r\\n\\r\\nServ_ID=S0001&Ver=1.0&Tx_ID=T0003&Receiver//#define URL1 "GET \\r\\nProxy-Connection:Keep-Alive\\r\\n\\r\\n>HTTP/1.1\\r\\nHost:\\r\\nProxy-Connection:Keep-Alive\\r\\n\\r\\n"#define URL "GET /lenovo/data/mobile/test_zlib/contents.metaHTTP/1.1\\\\nX-ONLINE-HOST:4:80\\\\n\\\\r\\\\n"statickal_int8soc_id;voidmy_socket_receive(void);voidmy_socket_notify(void*msg_ptr);voidmy_socket_send(void){kal_int32ret;ret=soc_send(soc_id,(unsignedchar*)URL,strlen(URL),0);//kal_prompt_trace(MOD_TCPIP,"vvvvvvv-%d>>>>>>>>",strlen(URL));if(ret>0){my_socket_receive();}else{SetProtocolEventHandler(my_socket_notify,MSG_ID_APP_SOC_NOTIFY_IND);}}#defineBUF_SIZE200voidmy_socket_receive(void)kal_uint8rbuf[BUF_SIZE];intret;unsignedshortwBuf[BUF_SIZE+1];
ret=soc_recv(soc_id,rbuf,BUF_SIZE,0);if(ret>0){inti;//kal_prompt_trace(MOD_TCPIR"vvvvvvv-%d>>>>>>>>",rbuf);if(ret==SOC_WOULDBLOCK){SetProtocolEventHandler(my_socket_notify,MSG_ID_APP_SOC_NOTIFY_IND);}}}voidmy_socket_notify(void*msg_ptr){app_soc_notify_ind_struct*soc_notify=(app_soc_notify_ind_struct*)msg_ptr;switch(soc_notify->event_type){caseSOC_READ:my_socket_receive();break;caseSOC_WRITE:my_socket_send();break;caseSOC_CONNECT://kal_prompt_trace(MOD_TCPIR"<<<<<<<<<>>>>>>>");my_socket_send();break;caseSOC_CLOSE:break;default:break;}}intmy_test_socket_entry(){kal_uint8val=KAL_TRUE;kal_int8soc_ret;//kal_int8soc_id;soc_id=soc_create(PF_INET,SOCK_STREAM,0,MOD_MMI,14);//TPC_ACCOUNT_ID);if(soc_id<0)return0;if(soc_setsockopt(soc_id,SOC_NBIO,&val,sizeof(val))<0){return0;}va上SOC_READ|SOC_WRITE|SOC_CLOSE|SOC_CONNECT;if(soc_setsockopt(soc_id,SOC_ASYNC,&val,sizeof(val))<0){return0;}memset(&my_ip_addr,0,sizeof(sockaddr_struct));my_ip_addr.addr[O]=10;〃10;my_ip_addr.addr[l]=0;〃0;my_ip_addr.addr[2]=0;〃0;my_ip_addr.addr[3]=172;〃172;my_ip_addr.addr_len=4;my_ip_addr.port=80;my_ip_addr.sock_type=SOCK_STREAM;my_ip_addr.sock_type=SOCK_STREAM;soc_ret=soc_connect(soc_id,&my_ip_addr);if(soc_ret>=0){my_socket_send();returnsoc_ret;}elseif(soc_ret==SOC_WOULDBLOCK)/*—般此條件都會(huì)成立,返回!*/{〃Jx_debug("SOC_WOULDBLOCK!!!\\r\\n");SetProtocolEventHandler(my_socket_notify,MSG_ID_APP_SOC_NOTIFY_IND);returnsoc_ret;}return1;}#endif本文來自:我愛研發(fā)網(wǎng)(52RD.com)-R&D大本營詳細(xì)出處:/Blog/ArchiveThread.asp?SID=20581MTK平臺用Socket實(shí)現(xiàn)HTTP請求一、MTK平臺Socket聯(lián)網(wǎng)過程
熟悉PC機(jī)編程的人都知道,Socket編程接口分兩套:TCP和UDP;TCP和UDP中又有服務(wù)器端和客戶端的概念,這里講的是TCP的客戶端編程接口。MTK平臺中Socket創(chuàng)建步驟:1、 soc_create()倉U建Socket;2、 soc_setsockopt設(shè)置Socket為非阻塞模式;3、 soc_setsockopt設(shè)置Socket選項(xiàng)為連接,讀,寫,關(guān)閉;不清楚為什么要連續(xù)設(shè)置兩次;4、 如果是CMNET聯(lián)網(wǎng)并且請求中用到了英文域名還需要解析域名soc_gethostbyname,除非使用ip作為域名,解析出來的IP作為我們建立連接的目標(biāo)IP;如果是CMWAP聯(lián)網(wǎng),直接跳到第5步,直接連接移動(dòng)或聯(lián)通的網(wǎng)關(guān):72:80;5、 soc_connect與服務(wù)器建立連接;6、 soc_send發(fā)送請求;7、soc_recv 接收服務(wù)器返回的數(shù)據(jù);8、 soc_close關(guān)閉Socket;9、 如果需要關(guān)閉數(shù)據(jù)賬戶soc_close_nwk_account二、CMNET,CMWAP方式下的HTTP請求內(nèi)容格式HTTP請求格式:GET方法MTK模擬器中wap瀏覽器發(fā)送的請求內(nèi)容“GET/go_13596557HTTP/1.1Host:User-Agent:SQH_D480B_01/LB19504/WAP2.0ProfileAccept:application/vnd.wap.wmlc,**//(想當(dāng)長,省去后面部分)Accept-Charset:utf-&utf-16,iso-8859-1,iso-10646-ucs-2,GB2312,windows-1252,us-asciiAccept-Language:zh-tw,zh-cn,enCookie:JSESSIONID=aAQPOFIXp3z7Connection:Keep-AlivePOST方法對一些需要向服務(wù)器傳入?yún)?shù)的請求,按名稱搜索等請求。還以空中網(wǎng)天氣查詢?yōu)槔?,之中的其他城市天氣查詢,輸入其他城市名稱或電話區(qū)號查詢:“POST/weather/search.jsp?setcity=1HTTP/1.1Host:User-Agent:SQH_D480B_01/LB19504/WAP2.0ProfileAccept:application/vnd.wap.wmlc,*/*〃(想當(dāng)長,省去后面部分)Accept-Charset:utf-&utf-16,iso-8859-1,iso-10646-ucs-2,GB2312,windows-1252,us-asciiAccept-Language:zh-tw,zh-cn,enContent-Type:application/x-www-form-urlencoded;charset=utf-8Cookie:KONG_ACCESS=AWYZhg==;JSESSIONID=a91MDc6qoMYfConnection:Keep-AliveContent-Length:46//get方法沒有這一項(xiàng)
XXXXXX//傳給服務(wù)器46字節(jié)長的數(shù)據(jù)(參數(shù))當(dāng)然如果是CMWAP聯(lián)網(wǎng)方式也要和上述的GET方法一樣設(shè)置Host和X-Online-Host項(xiàng),Host:72X-Online-Host:以上的內(nèi)容,可以在調(diào)試狀態(tài)下運(yùn)行模擬器的wap瀏覽器,在soc_send方法處插入斷點(diǎn)觀察。三、 CMNET,CMWAP連接差別1、 GPRS賬戶:與pc機(jī)上的socket客戶端接口不同,手機(jī)客戶端在soc_create,soc_gethostbyname接口中都多了參數(shù)nwt_acount_id,只的是一般在“網(wǎng)絡(luò)服務(wù)”->“數(shù)據(jù)賬戶”->“GPRS”下的GPRS數(shù)據(jù)賬戶id,一般起始的一個(gè)賬戶id是10,往下遞增1,在建立連接過程中,如果是CMWAP方式聯(lián)網(wǎng),soc_create,soc_gethostbyname接口就要設(shè)置接入點(diǎn)為CMWAP的賬戶id,CMNET就要設(shè)置接入點(diǎn)為CMNET的賬戶。2、 目標(biāo)服務(wù)器:還以空中網(wǎng)的天氣服務(wù)為例,CMNET情況下,soc_connect需要連接””這個(gè)ip,如果請求的url為”/weather/home.jsp” ,還需要調(diào)用soc_gethostbyname接口去解析域名;如果是CMWAP方式聯(lián)網(wǎng),soc_connect只需要連接移動(dòng)或聯(lián)動(dòng)的網(wǎng)關(guān)”72:80”。3、 HTTP請求內(nèi)容格式(或稱報(bào)文):如第二節(jié)所述。四、 SIM1還是SIM2聯(lián)網(wǎng)SIM1還是SIM2聯(lián)網(wǎng),MTK平臺是通過創(chuàng)建socket時(shí)傳入的nwt_acount_id區(qū)分的,如果是SIM1上網(wǎng),賬號就是指的是一般在“網(wǎng)絡(luò)服務(wù)”->“數(shù)據(jù)賬戶”->“GPRS”下的對應(yīng)的GPRS數(shù)據(jù)賬戶id;如果是SIM2,通過在四字節(jié)的賬戶id其他字節(jié)設(shè)置掩碼來區(qū)分。設(shè)置接口比如07B平臺的always_ask_encode_data_account_id,6235_08A的cbm_encode_data_account_id接口。不同平臺可能略有差別。五、 聯(lián)通卡還是移動(dòng)卡?參考其他Socket聯(lián)網(wǎng)代碼中有的以接入點(diǎn)是否為”uniwap”來判斷是不是聯(lián)通的代理上網(wǎng),但是通過實(shí)驗(yàn),即使在聯(lián)通卡時(shí)連接移動(dòng)的”cmwap”賬戶,也是可以正常聯(lián)網(wǎng)的。不知道設(shè)計(jì)“GPRS數(shù)據(jù)賬戶”的最初意圖是什么?通過apn來區(qū)分同一內(nèi)部ip地址網(wǎng)關(guān)不同的公網(wǎng)ip嗎?如有高人路過,請指點(diǎn);六、 HTTP1.1與Transfer-Encoding為chunked的編碼方式發(fā)送一個(gè)請求后,如果服務(wù)器返回的消息頭內(nèi)容包括“Transfer-Encoding:chunked”那么他的傳輸編碼為“chunked”類型。這種傳輸類型的數(shù)據(jù)體內(nèi)容格式是這樣:[16進(jìn)制數(shù)字字符串1到4個(gè)字節(jié)len]\r\n[len長的數(shù)據(jù)體]\r\n[16進(jìn)制數(shù)字字符串1到4個(gè)字節(jié)len]\r\n[len長的數(shù)據(jù)體]\r\n
[16進(jìn)制數(shù)字字符串1到4個(gè)字節(jié)len==0]\r\n\r\n其中,長度len是16進(jìn)制的數(shù)字,表示本段數(shù)據(jù)體的長度(字節(jié)數(shù)),回車換行后,就是這一段數(shù)據(jù)真實(shí)內(nèi)容,這就是一段數(shù)據(jù)體的格式,一段接一段;直到數(shù)據(jù)體長度為0的數(shù)據(jù)段出現(xiàn),緊接著兩個(gè)回車換行,標(biāo)識本次請求的數(shù)據(jù)均已接收完畢。不過socket可以根據(jù)soc_recv返回值等于0來判斷接收數(shù)據(jù)結(jié)束。如果收到的是這個(gè)編碼類型的內(nèi)容,需要對接收到的數(shù)據(jù)進(jìn)行處理。七、MTK平臺的S8類型的誤導(dǎo)MTK平臺定義的兩個(gè)數(shù)據(jù)類型U8和S8,一看名稱我們可能會(huì)以為是unsignedchar和signedchar,但事實(shí)并非如此,typedefchar S8;typedefunsignedcharU8;MTK平臺的char默認(rèn)也是unsignedchar類型的,soc_gethostbyname返回值類型是kal_int8(typedefsignedcharkal_int8;),如果S8或平臺的char類型是有符號的字符型,那么,kal_int8和S8應(yīng)該是等價(jià)的,但用S8類型變量作為soc_gethostbyname的返回值時(shí),經(jīng)常返回254導(dǎo)致域名不會(huì)被正常解析,其實(shí)應(yīng)該返回S0C_W0ULDBL0CK(-2),應(yīng)該是阻塞碼,將soc_gethostbyname返回值類型改為kal_int8后,就能正常處理域名解析了。這證明平臺的S8類型及char類型默認(rèn)是無符號的MTK之Socket篇一蚩于cmnet注:個(gè)人收集和理解所書,有誤處請指出,轉(zhuǎn)載請注明出處首先確認(rèn)能否正確讀到存儲(chǔ)在NVRAM中的dataaccount。調(diào)用DataAccountReadyCheck(SendReq),SendReq為回調(diào)函數(shù),如果正確讀到dataaccount便會(huì)執(zhí)行函數(shù)SendReq。這里以接入點(diǎn)為cmnet作為例子。#defineCMWAP_ACCOUNT_ID (14) ①#defineCMNET_ACCOUNT_ID (11) ②① ②的值可以通過在custom\common\pluto_mmi\Nvram_common_custpack.c中的數(shù)組
COMMON_NVRAM_EF_ABM_PS_PROFILE_DEFAULT找到對應(yīng)的值,例如:CHINAMOBILE,cmnet。當(dāng)然這項(xiàng)在MTKrelease出來的版本中并不一定會(huì)有,但是你可以自己添加。分析:0x02,序號,也就是上邊所定義的ACCOUNT_ID。那為什么我們用的是11,而不是2呢?這個(gè)序號是這樣得到的,等于③CUSTOM_DEFINED_MAX_CSD_PROFILE_NUM+④NVRAM_EF_ABM_GPRS_PROFILE_IDX,其中③是指CSD的個(gè)數(shù),他具體值可以在文件custom\common\Custom_data_account.h找到。④就是對應(yīng)GPRS的那個(gè)索引值,就是前面所說的0x02。關(guān)于dataaccount的配置可以看Data_Account_Configuration_Guide.pdf文件。0x11,GSM網(wǎng)絡(luò)名,這里設(shè)置為“CHINAMOBILEGPRS”,這個(gè)只是在手機(jī)界面上顯示的標(biāo)識GSM網(wǎng)的名字,可以自由設(shè)置。接著是用戶名、密碼、DNS。再至UAPN,“cmnet”,及APN長度0x05……0x02,0x11,0x00,0x00,0x43,0x48,0x49,0x4e,0x41,0x20,0x4d,0x4f,0x42,0x49,0x4c,0x45,0x20,0x47,0x50,0x52,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//Name0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//username0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//password0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//dns0x00,0x00,0x00,0x00,//secondarydns0x63,0x6d,0x6e,0x65,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際貨物知識產(chǎn)權(quán)保護(hù)合同
- 2025年度建筑結(jié)構(gòu)植筋加固與綠色建材應(yīng)用合同
- 現(xiàn)代服務(wù)業(yè)在旅游行業(yè)的應(yīng)用創(chuàng)新
- 電力系統(tǒng)穩(wěn)定性對經(jīng)濟(jì)的影響
- 電子信息技術(shù)在商業(yè)智能中的運(yùn)用及優(yōu)勢
- 現(xiàn)代多媒體技術(shù)在教育中的應(yīng)用與探索
- 湘教版地理八年級下冊第四節(jié)《貴州省的環(huán)境保護(hù)與資源利用》聽課評課記錄
- 2025年度商業(yè)綜合體廣告牌設(shè)計(jì)與制作合同
- 物聯(lián)網(wǎng)設(shè)備中的電磁兼容性問題探討
- 【基礎(chǔ)卷】同步分層練習(xí):四年級下冊語文第12課《在天晴了的時(shí)候》(含答案)
- 【幼兒園戶外體育活動(dòng)材料投放的現(xiàn)狀調(diào)查報(bào)告(定量論文)8700字】
- 剪映專業(yè)版:PC端短視頻制作(全彩慕課版) 課件 第3章 短視頻剪輯快速入門
- 湖南省長沙市開福區(qū)青竹湖湘一外國語學(xué)校2023-2024學(xué)年九年級下學(xué)期一模歷史試題
- 帶狀皰疹與帶狀皰疹后遺神經(jīng)痛(HZ與PHN)
- 漢密爾頓抑郁和焦慮量表
- 風(fēng)電場事故案例分析
- 前列腺癌的診斷與治療
- 人教版八年級數(shù)學(xué)初中數(shù)學(xué)《平行四邊形》單元教材教學(xué)分析
- EPC項(xiàng)目設(shè)計(jì)及施工的配合
- 年產(chǎn)5萬噸1,4-丁二醇的工藝流程設(shè)計(jì)
- 八年級上冊-2024年中考?xì)v史總復(fù)習(xí)核心考點(diǎn)與重難點(diǎn)(部編版)
評論
0/150
提交評論