İki ayrı bölüme sahip bir programım var: Ağ arabirimi kablosuz LAN ve diğeri kablolu LAN bağlantısı olduğunda bunlardan biri çalıştırılmalıdır. . Programımın içinde bunu nasıl bilebilirim? Bu bilgiyi almak için hangi işlevi kullanmalıyım?(C, Linux) Ağ arabiriminin kablosuz veya kablolu olup olmadığını bilmek
cevap
komut satırından iwconfig komutunu kullanabilirsiniz:
$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
Eğer opak link yukarıda açıklıyor @ gibi, C kullanmak kaynakları almak ya ıoctl'ler görmek için strace kullanmanız gerekiyorsa()
ioctl(3, SIOCGIWNAME, 0x7fff82c0d040) = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCGIFFLAGS, {ifr_name="lo", ifr_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING}) = 0
write(2, "lo no wireless extensions"..., 35lo no wireless extensions.
) = 35
ioctl(3, SIOCGIWNAME, 0x7fff82c0d040) = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCGIFFLAGS, {ifr_name="eth0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
write(2, "eth0 no wireless extensions"..., 35eth0 no wireless extensions.
) = 35
SIOCGIWNAME usage Bkz:
#define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */
/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
* Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
uhmm ... üzgünüm, oldukça yeniim. Hem cevabınızı hem de opaklarınızı "doğru cevap" olarak seçebilir miyim? – deinocheirus
Ne yazık ki;) İkisini de kabul edebilirsin, ama sorunun cevabını en iyi cevaplayanı kabul etmelisin. Bu senin kararın :) –
Burada örnek bir kod uygulamıştım: https://gist.github.com/edufelipe/6108057 –
Bunu C'den almak mümkündür.
Benzer soru ile ilgili bilgi için bu link'a bakın.
cihazınız adı varsa kullanmak gerek NETDEVICE
, /sys/class/net/NETDEVICE/wireless
dizininin varlığını kontrol etmek, kullanabileceğiniz bir yüklemedir. Bu sadece bir Linux yaklaşımıdır ve /sys
'un hemen hemen her zaman normal durumda olduğu varsayılmaktadır. Ayrıca ioctl() ler ile uğraşmak yerine bu yöntemi komut dosyalarından kullanmak daha kolaydır.
NetworkManager'ı hedeflerseniz, API, C examples ve NMDeviceType'a bakın.
Yalnızca kablosuz olan arabirimlerde bulunan kablosuz uzantı protokolü sürümünü döndüren ioctl(fd, SIOCGIWNAME)
numaralı telefonu arayabilirsiniz.
int check_wireless(const char* ifname, char* protocol) {
int sock = -1;
struct iwreq pwrq;
memset(&pwrq, 0, sizeof(pwrq));
strncpy(pwrq.ifr_name, ifname, IFNAMSIZ);
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
return 0;
}
if (ioctl(sock, SIOCGIWNAME, &pwrq) != -1) {
if (protocol) strncpy(protocol, pwrq.u.name, IFNAMSIZ);
close(sock);
return 1;
}
close(sock);
return 0;
}
tam Örneğin bakınız: hepsi paralel olarak kullanılmakta olan birkaç ağ arayüzleri vardır https://gist.github.com/edufelipe/6108057
- 1. C veya Java'da Linux için Kablosuz API
- 2. Kablosuz ağların ESSID değerini C++ ile UBUNTU aracılığıyla bilmek istiyorsunuz
- 3. Bir sürücü harfinin paylaşılan/ağ sürücüsü olup olmadığını kontrol edin
- 4. Android :: Kablosuz ağ bağlantısı nasıl kesilir?
- 5. Android/Java bağlı kablosuz wifi türünü bilmek nasıl
- 6. Bir Wi-Fi ağına bağlı olup olmadığını kontrol edin C#
- 7. Bir yolun mutlak veya göreli olup olmadığını kontrol edin
- 8. Ping veya ağdaki bir cihaza ağda C olup olmadığını söyleyin C#
- 9. İşlev C veya Lua uygulanmış olup olmadığını kontrol edin
- 10. Bir ağ yolunun kullanılabilir olup olmadığını nasıl belirleyebilirim (çevrimiçi veya çevrimdışı)?
- 11. Tablonun var olup olmadığını kontrol edin C#
- 12. Bilgisayarımda bios parolasının olup olmadığını kontrol edin (VB/C# ile)
- 13. Ağ Sürücüsünde dizinin var olup olmadığını kontrol edin
- 14. Eşlenen ağ sürücüsünün mevcut olup olmadığını kontrol edin
- 15. Ağ konum sağlayıcısı etkin olup olmadığını kontrol etmek için herhangi bir alternatif yolu?
- 16. Oynatıcının sunucu veya istemci olup olmadığını belirleme
- 17. Sütun değerinin NULL olup olmadığını veya Mysql
- 18. mbstring'in etkin olup olmadığını veya PHP betiğinden olmadığını tespit edin
- 19. İşlemcimin 32 veya 64 bit olup olmadığını nasıl anlayabilirim?
- 20. Monitör açık olup olmadığını tespit edin C#
- 21. Bir sınıf başvurulan olup olmadığını belirleme C#
- 22. Bir klasörün yerel veya ağ kaynağının .NET olup olmadığını kontrol edin
- 23. Nasıl gizli bir kablosuz ağa bağlanan bir linux masaüstü yazılımı yazmak zorundayım gizli wifi ağına nmcli
- 24. Mümkün olduğunu olup olmadığını bilmiyorum
- 25. İşlev veya yöntemin normal veya asenkronize olup olmadığını sınama
- 26. System.DirectoryServices.AccountManagement.PrincipalCollection - asıl kullanıcı veya grup olup olmadığını nasıl kontrol edersiniz?
- 27. Bir uygulama bir ağ sürücüsünden çalışıyor olup olmadığını öğrenmek için C# kolay yolu?
- 28. Oracle veya OpenJDK java sürümünün Linux üzerinde yüklü olup olmadığını kontrol etmek için Bash komutu
- 29. JSON ve XML'in geçerli olup olmadığını kontrol edin? C#
- 30. Görüntünün olup olmadığını kontrol et
Ne olur? – unwind
Kodun kablosuz kısmı, paralel olarak kablolu olanlar için kablosuz ve kablolu kısımlar için yürütülür. – deinocheirus