如何在Windows CE上诊断WSAECONNREFUSED错误?

时间:2011-06-23 15:44:54

标签: windows-mobile tcp windows-ce

我有戴尔Axim Windows CE设备(Windows Mobile 5.0 OS 5.1.1702 Build 14366.1.0.1)连接到Dell Latitude E6500笔记本电脑。我的C ++应用程序在CE设备上运行并侦听端口80上的TCP连接。程序尝试使用地址169.254.2.1:80连接到自身,并获取错误代码WSAECONNREFUSED(10061)。这通常表明没有人在监听该端口。如果我将地址更改为127.0.0.1:80,则连接成功。

这是奇怪的部分。如果我将设备与笔记本电脑断开连接并将其连接至Dell Latitude D830,则一切正常。 169.254.2.1地址是相同的,但连接到它成功。请注意,这是在CE设备上运行的应用程序连接到自身,而不是连接到笔记本电脑,也不是连接到设备上应用程序的笔记本电脑。我们用几台不同的机器证实了这一点 - 所有的E6500都显示出问题,没有别的。

我不明白设备连接到哪台机器会影响内部TCP连接。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先我要问你为什么要用169.254.2.1连接自己。该IP地址是ActiveSync分配的地址,并且不保证是静态的(实际上在过去,当驱动程序从USB串行转到RNDIS时确实发生了一次更改),因此使用它是有风险的。

如果您想自己解决,请使用标准的环回地址,如127.0.0.1。如果要寻址activesync合作伙伴,请解析主机名ppp_peer并让它为您提供实际地址。

我对行为来源的猜测是,当你连接到PC时,本地“LAN”是用两个节点(设备和PC)构建的。 LAN往往不是一个“完整”网络(例如ICMP数据包不会被传输),它可能依赖于主机PC加载的驱动程序。当然,这纯属猜测。

正如我所说,我想更多地了解你为什么使用你要查看的地址,看看我们是否可以通过做一些完全更安全的事情来解决问题。