Jump to content
DrKein

[Problema] Network Connections...

Recommended Posts

DrKein

Boa noite,

Estou com um problema há alguns dias.... Numa aplicação em C# preciso de saber:

  • Se a wireless tem ligação
  • Qual o nome da rede à qual a wifi está ligada.
  • Se a porta Lan tem ligação

Para saber "se a wireless tem ligação" resolvi da seguinte maneira:

public bool wifiConnectionState()
 {
	 bool result = false;
	 uint serviceVersion = 0;
	 IntPtr handle = IntPtr.Zero;
	 if (WlanOpenHandle(WLAN_API_VERSION_2_0, IntPtr.Zero, out serviceVersion, out handle) == ERROR_SUCCESS)
	 {
		 IntPtr ppInterfaceList = IntPtr.Zero;
		 WLAN_INTERFACE_INFO_LIST interfaceList;
		 if (WlanEnumInterfaces(handle, IntPtr.Zero, out ppInterfaceList) == ERROR_SUCCESS)
		 {
			 //Tranfer all values from IntPtr to WLAN_INTERFACE_INFO_LIST structure
			 interfaceList = new WLAN_INTERFACE_INFO_LIST(ppInterfaceList);
			 for (int i = 0; i < interfaceList.dwNumberofItems; i++)
				 if (getStateDescription(interfaceList.InterfaceInfo[i].isState) == "connected") result = true;

			 //frees memory
			 if (ppInterfaceList != IntPtr.Zero)
				 WlanFreeMemory(ppInterfaceList);
		 }
		 //close handle
		 WlanCloseHandle(handle, IntPtr.Zero);
	 }
	 return result;
 }

Agora falta-me resolver os outros 2 pontos... Jé tentei várias maneiras mas sempre sem sucesso.

Uma das formas que utilizei para ver se a LAN está conectada não funcionou foi :

foreach(NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
	 {
		 if (nic.NetworkInterfaceType== NetworkInterfaceType.Ethernet)
		 MessageBox.Show( nic.Name);
	 }

No código acima, todas as ligações, incluindo a wireless aparecem como ethernet...

Podem ajudar-me?

Share this post


Link to post
Share on other sites
He B TeMy

Vais ter que ser mais explicito quanto ao que referes "ligação", queres saber se a rede está connectada? Queres saber se o cabo de LAN está connectado?

Já andei a mexer com código parecido e vou-te dizer que não é tudo preto no branco, acho que estás com sorte se estiveres a pensar que conseguirás detectar se a rede está connectada 100% das vezes, sobre o wireless recomendo-te usar 'NativeWifi' dll o que é um 'wrapper' para a nativewifi api do windows.

Vou-te deixar dois links, um com exemplo para a nativewifi (dll é pequena, 20kb pelo que me lembro) .

http://stackoverflow.com/a/1686880/2990244

http://stackoverflow.com/a/15277029/2990244

basicamente, no código que tens aí em baixo, tu tens que primeiro verificar se está operacional a interface "Up" antes de verificares se é Ethernet (e isto era o que estava a falar que não é fiável, mas não existe maneira melhor.)

Depois tens um exemplo da NativeWifi, o nome da rede que falas chama-se SSID, o link que te dei acima obtêm isso e funciona perfeitamente, testado no windows 7 aqui, mas como se baseia na api do windows duvido que não funcione em qualquer sistema apartir do windows vista.

Share this post


Link to post
Share on other sites
DrKein

He B Te My, Obrigado pela resposta ;)

Eu já estou a utilizar a NativeWifi dll na minha aplicação para verificar se a wireless está connectada. O problema está que nao consigo que me devolva a SSID da rede. E sim o que eu quero mesmo é saber o estado de cada interface (Wireless e LAN). E mesmo para a wireless ele devolve sempre o valor "NetworkInterfaceType.Ethernet" quando no meu entender deveria devolver o valor "networkinterfacetype wireless80211".

Share this post


Link to post
Share on other sites
He B TeMy

Pois, foi o que te tentei dizer, NetworkInterfaceType não é fiável, e está documentado, vê esta resposta e o link nela também: http://stackoverflow.com/a/2859830/2990244

Como não consegues obter o SSID? o código que estava no link que te dei acima funciona aqui, dá-te algum erro?

Edited by He B Te My

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.