我正在尝试使用 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 的情况下完成,调试完全是文本文件/消息框:(如果有人能描述我应该采取的步骤,我会非常高兴。