主題:EM9000撥號(hào)問(wèn)題 共有38935人關(guān)注過(guò)本帖 |
---|
lijianhua |
1樓 |
EM9000撥號(hào)問(wèn)題 Post By:2010-4-22 9:56:00 [只看該作者]
使用的EM9000主板和GTM900-B無(wú)線模塊,程序撥號(hào)調(diào)用EM9000_GPRS_Dial和EM9000_ISA_DLL類(lèi)庫(kù),現(xiàn)在問(wèn)題是撥號(hào)可以撥上去,但是不能很好的監(jiān)控實(shí)時(shí)在線狀態(tài)(如果掉線重?fù)埽,造成?shù)據(jù)發(fā)送不出去。
現(xiàn)在采用的判斷方法代碼如下(只考慮到IP來(lái)判斷): public bool IsOnline()         {             IPAddress[] addressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList;             foreach (IPAddress address in addressList)             {                 if ((!IPAddress.IsLoopback(address) && (address != IPAddress.IPv6None)) && ((address != IPAddress.None) && address.ToString().StartsWith("10.")))                 {                     return true;                 }             }             return false;         } 程序中有調(diào)用coredll.dll的RasDial方法的一段代碼:  [DllImport("coredll.dll")]         public static extern uint RasDial(IntPtr dialExtensions, IntPtr phoneBookPath, IntPtr rasDialParam, uint NotifierType, IntPtr notifier, ref IntPtr pRasConn); 請(qǐng)教該方法的返回值有何意義,可否作為判斷的標(biāo)識(shí)?或者是否還有其他的有效方法可以準(zhǔn)確有效的判斷GPRS在線情況?謝謝! |
|
單帖管理 | 引用 | 回復(fù) |
lqk |
2樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2010-4-22 10:34:00 [只看該作者]
通過(guò)獲得自身IP是一個(gè)方法,但并不完全可靠,可以通過(guò)收發(fā)心跳包來(lái)判斷。
RasDial()是阻塞的同步撥號(hào)函數(shù),返回時(shí)要么撥號(hào)成功,要么失敗,具體可看一下MSDN,如果想監(jiān)視撥號(hào)過(guò)程,可以考慮采用異步撥號(hào)。 |
單帖管理 | 引用 | 回復(fù) |