Я пытаюсь подключить мой КПК к специальной сети, используя OpenNETCF.Net.Я хочу принудительно установить локальный адрес ссылки, а не полагаться на резервный механизм, потому что это занимает слишком много времени.Затем я хочу открыть 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();
Кстати, я удалил вызовы Rebind в установщиках CurrentIpAddress и CurrentSubnetMask и просто сделал 1 вручную.Кажется, не имеет значения, за исключением того, что он немного быстрее.
Результаты могут отличаться.Иногда все вызовы кажутся успешными, но я все еще подключен к тому же SSID, а не к тому, к которому я хочу подключиться.Иногда я получаю «Невозможно запросить интерфейс WZC», «Список предпочтений не найден» или «Невозможно установить интерфейс WZC».Иногда кажется, что индекс беспроводного адаптера меняется.
Однако иногда все работает нормально.Соединение TCP открывается и работает как положено.Чаще всего я получаю SocketExceptions при попытке записи в поток.
Все делается без участия Activesync, отладка полностью текстовых файлов / ящиков сообщений :( Я был бы очень рад, если бы кто-то мог описатьшаги, которые я должен предпринять.