Question

I'm trying to connect my PDA to an ad-hoc network using OpenNETCF.Net. I want to force setting a link-local address and not rely on a fallback mechanism because that takes a little too long. Then I want to open a TCP connection to another device. I'm really confused as there seems very little information on how to get this done, especially the order in which these steps should be performed.

My attempt, that sometimes works:

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();

By the way, I removed the Rebind calls in the setters of CurrentIpAddress and CurrentSubnetMask and just do 1 manually. Doesn't seem to make a difference, except it's a bit faster.

The results vary. Sometimes all the calls seem to succeed, but I'm still connected to the same SSID and not the one I want to connect to. Sometimes I get "Unable to Query WZC Interface", "No preferred list found", or "Unable to Set WZC Interface". Sometimes it seems the index of the wireless adapter changes.

However, sometimes everything works fine. The TCP connection opens and works as expected. More often though, I'm getting SocketExceptions when trying to write to the stream.

Everything is done without Activesync being involved, debugging is completely text files/messageboxes :( I'd be very happy if someone could describe the steps I should take.

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top