主題:EM9000撥號問題 共有38933人關注過本帖 |
---|
lijianhua |
1樓 |
EM9000撥號問題 Post By:2010-4-22 9:56:00 [只看該作者]
使用的EM9000主板和GTM900-B無線模塊,程序撥號調用EM9000_GPRS_Dial和EM9000_ISA_DLL類庫,現在問題是撥號可以撥上去,但是不能很好的監控實時在線狀態(如果掉線重撥),造成數據發送不出去。
現在采用的判斷方法代碼如下(只考慮到IP來判斷): 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;         } 程序中有調用coredll.dll的RasDial方法的一段代碼:  [DllImport("coredll.dll")]         public static extern uint RasDial(IntPtr dialExtensions, IntPtr phoneBookPath, IntPtr rasDialParam, uint NotifierType, IntPtr notifier, ref IntPtr pRasConn); 請教該方法的返回值有何意義,可否作為判斷的標識?或者是否還有其他的有效方法可以準確有效的判斷GPRS在線情況?謝謝! |
|
單帖管理 | 引用 | 回復 |
lqk |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2010-4-22 10:34:00 [只看該作者]
通過獲得自身IP是一個方法,但并不完全可靠,可以通過收發心跳包來判斷。
RasDial()是阻塞的同步撥號函數,返回時要么撥號成功,要么失敗,具體可看一下MSDN,如果想監視撥號過程,可以考慮采用異步撥號。 |
單帖管理 | 引用 | 回復 |