我们有一个 Compact Framework 3.5 应用程序,它通过网络底座执行一天结束的下载工作。
该设备是带有 Windows Mobile 6.1 Professional 的 Motorola MC9500。
为了做到这一点,我们创建一个Socket
类并调用Connect()
但它只有在没有连接 GPRS 的情况下才有效。
如果 GPRS 已连接,则该方法超时。
我们的解决方案是在将设备放入底座时以编程方式关闭手机,并在移除时再次开启。
但这是非常暴力的,我们不明白为什么它不起作用,什么时候应该!
这是连接(sServerIPAddress == "192.168.27.107"
)的代码:
oEndPoint = new IPEndPoint(IPAddress.Parse(sServerIPAddress), i);
oSock = new Socket(oEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
oSock.Connect(oEndPoint);
这是两个接口连接时的路由表:
Destination Netmask Gateway Metric
0.0.0.0 0.0.0.0 192.168.27.1 20
0.0.0.0 0.0.0.0 10.212.14.71 50
10.0.0.0 255.0.0.0 10.212.14.71 50
10.212.14.71 255.255.255.255 127.0.0.1 50
10.255.255.255 255.255.255.255 10.212.14.71 50
127.0.0.0 255.0.0.0 127.0.0.1 1
* 192.168.27.0 255.255.255.0 192.168.27.52 20 *
192.168.27.52 255.255.255.255 127.0.0.1 20
192.168.27.255 255.255.255.255 192.168.27.52 20
224.0.0.0 240.0.0.0 192.168.27.52 20
224.0.0.0 240.0.0.0 10.212.14.71 50
255.255.255.255 255.255.255.255 10.212.14.71 1
255.255.255.255 255.255.255.255 192.168.27.52 1
据我所知,应该选择 LAN 作为目标地址
我看不出 WinMo 连接管理器应该与此有什么关系,当然在 IP 级别只有路由表对连接很重要?
谁能告诉我为什么它只在 GPRS 关闭时才有效以及如何正确操作?
谢谢,
詹姆士。