天天看點

Windows Mobile Gprs連接配接與資料傳輸

此子產品分兩部分完成,傳輸資料用socket ,要使用socket在ppc上進行資料傳輸,就要誰讓ppc自動連接配接gprs 。其中套接字和gprs連結分别進行說明。

一 ,應用程式在進行其它所需的windows sockets api調用需要進行一次成功的wsastartup()調用,然後就是套接字程式設計。分為伺服器端和用戶端。

伺服器:

先建立套接字

然後初始化一個sockaddr_in結構體,然後用bind()将本地ip與端口與socket進行綁定,之後用listen()監聽該套接字,如果有連接配接請求則使用accept()建立連接配接,然後用send()和recv()接受和發送資料,最後關閉套接字。

用戶端:

用戶端與伺服器端不同的是不需要進行socket綁定,不需要監聽是否有連接配接請求,也不用accept()建立連接配接,而是用connect()發起連接配接請求。

進行調試時必須先運作伺服器端,再運作用戶端。

二,首先我們利用connmgrapireadyevent()函數來确認是否有可用連接配接,利用此函數來我們可以傳回一個連接配接事件的句柄 ,注意在的得到句柄後要記得及時釋放,

然後用waitforsingleobject()函數的傳回值可以判斷在指定時間内是否找到可用連接配接,如果傳回值wait_object_0說明有可用連接配接,然後通過connmgrmapurl ()函數來選則一個最好的連結,函數原型為:

connmgrmapurl()是通過給定的pwszurl位址,讓系統自己選擇一條最适合的網絡連接配接來通路該url,如果手機可以通過gprs/activesync/wifi/3g等多種方式通路某個網絡資源,用這個api你就不用擔心到底該用什麼方式聯網,系統會自己給你選一條最适合的網絡連接配接。第二個參數guid * pguid是根據第一個參數pwszurl進行指派,即你通路的url是http還是wap,每種都有一個全局唯一辨別。然後通過connmgrestablishconnectionsync()進行連接配接,此函數要傳遞一個connmgr_connectioninfo結構體,用于儲存用戶端的連接配接資訊。然後就可以進行socket通信了,就是第一部分所說的。最後用connmgrreleaseconnection()釋放連接配接。

提示:cmwap所獲得的位址是經過分組的,我抓幾次包都是10開頭的ip,輸入内網,外網的伺服器找不到這樣的ip,cmwap是未分組的,抓包顯示的就是公網ip.

ps:較久以前做的關于windows mobile的項目

繼續閱讀