主题:EM9000拨号问题 共有34053人关注过本帖 |
---|
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,如果想监视拨号过程,可以考虑采用异步拨号。 |
单帖管理 | 引用 | 回复 |