0

我正在尝试使用 OpenNETCF.Net 将我的 PDA 连接到 ad-hoc 网络。我想强制设置链接本地地址,而不是依赖回退机制,因为这需要一点时间。然后我想打开到另一台设备的 TCP 连接。我真的很困惑,因为关于如何完成这项工作的信息似乎很少,尤其是应该执行这些步骤的顺序。

我的尝试,有时有效:

var adp = NetworkInterface.GetAllNetworkInterfaces().
    First(v => v is WirelessZeroConfigNetworkInterface) 
    as WirelessZeroConfigNetworkInterface;  

if (adp.AssociatedAccessPoint != selectedAP.Name) {
    adp.AddPreferredNetwork(selectedAP);
    adp.ConnectToPreferredNetwork(selectedAP.Name);
}

adp.Unbind();
adp.CurrentIpAddress = IPAddress.Parse("169.254.1." + (new Random()).Next(2, 254).ToString());
adp.CurrentSubnetMask = IPAddress.Parse("255.255.0.0");
adp.Rebind();

顺便说一句,我删除了 CurrentIpAddress 和 CurrentSubnetMask 的设置器中的 Rebind 调用,然后手动执行 1 。好像没什么区别,就是快了一点。

结果各不相同。有时所有呼叫似乎都成功了,但我仍然连接到同一个 SSID,而不是我想要连接的那个。有时我会收到“无法查询 WZC 接口”、“未找到首选列表”或“无法设置 WZC 接口”。有时似乎无线适配器的索引发生了变化。

但是,有时一切正常。TCP 连接打开并按预期工作。但更常见的是,我在尝试写入流时收到 SocketExceptions。

一切都在没有涉及 Activesync 的情况下完成,调试完全是文本文件/消息框:(如果有人能描述我应该采取的步骤,我会非常高兴。

4

1 回答 1

0

最终我们尝试使用不同的 PDA,它似乎总是可以正常工作。无论如何,该程序的整个 Wi-Fi 功能都被清除了,因为似乎没有市场兴趣。

于 2011-12-14T23:05:11.157 回答