獲得本機ipv4和ipv6地址(即有線網絡卡地址)
程式原始碼如下:
1. 形參ipv4, ipv6為外部呼叫者傳入,用來儲存ipv4地址和ipv6地址,
2. MAX_PATH為自定義巨集, 為數值260, IPVN_SIZE為數值50, DEFAULT_STR_PORT為字串"8080"
3. 需在標頭檔案中包含以下內容
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib,"Ws2_32.lib")
void CAllBox::getLocalIPv4( char * ip4) { // 獲得本機主機名 #ifdef _WIN32 INT rc; WSADATA wsaData; rc = WSAStartup(MAKEWORD(2, 2), &wsaData); if (rc) { return ; } #endif char hostname[MAX_PATH]; memset(hostname, 0, MAX_PATH); gethostname(hostname, MAX_PATH); struct hostent FAR* lpHostEnt = gethostbyname(hostname); if (lpHostEnt == NULL) { return; } // 取得IP地址列表中的第一個為返回的IP, 即有線網絡卡IP(因為一臺主機可能會繫結多個IP) LPSTR lpAddr = lpHostEnt->h_addr_list[0]; // 將IP地址轉化成字串形式 struct in_addr inAddr; memmove(&inAddr, lpAddr, 4); #ifdef _WIN32 WSACleanup(); #endif strncpy(ip4, inet_ntoa(inAddr), strlen(inet_ntoa(inAddr))); return; }
void CAllBox::getLocalIPv6(char* ip6)
{
#ifdef _WIN32
INT rc;
WSADATA wsaData;
rc = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (rc) {
return ;
}
#endif
PHOSTENT hostinfo;
char hostname[HOSTNAME_LEN]; //主機名
char *port = DEFAULT_STR_PORT; //埠號
int ilRc;
memset(hostname, 0, HOSTNAME_LEN);
gethostname(hostname, sizeof(hostname)); struct addrinfo hint; struct addrinfo *ailist = NULL, *aip = NULL; struct sockaddr_in6 *sinp6; hint.ai_family = AF_INET6; /* hint 的限定設定 */ hint.ai_socktype = SOCK_STREAM; /* 這裡可是設定 socket type 比如 SOCK——DGRAM */ hint.ai_flags = AI_PASSIVE; // flags 的標誌很多 。常用的有AI_CANONNAME; hint.ai_protocol = DEFAULT_PROT; /* 設定協議 一般為0,預設 */ hint.ai_addrlen = DEFAULT_ADDRLEN; /* 下面不可以設定,為0,或者為NULL */ hint.ai_canonname = NULL; hint.ai_addr = NULL; hint.ai_next = NULL; ilRc = getaddrinfo(hostname, port, &hint, &ailist); /*通過主機名獲得地址資訊*/ if (ilRc < 0) { char str_error[ERR_MSG_LEN]; strcpy(str_error, (char *)gai_strerror(errno)); return ; } if (ailist == NULL) { return ; } aip = ailist; aip->ai_family == AF_INET6; sinp6 = (struct sockaddr_in6 *)aip->ai_addr; inet_ntop(AF_INET6, (void*)&sinp6->sin6_addr, ip6, IPVN_SIZE); #ifdef _WIN32 WSACleanup(); #endif return ; }
相關推薦
獲得本機ipv4和ipv6地址(即有線網絡卡地址)
程式原始碼如下: 1. 形參ipv4, ipv6為外部呼叫者傳入,用來儲存ipv4地址和ipv6地址, 2. MAX_PATH為自定義巨集, 為數值260, IPVN_SIZE為數值50, DEFAULT_STR_PORT為字串"8080" 3. 需在標頭檔案中包含以下內容
shell 獲得本機IP和free埠
#!/bin/bash IPaddr=`ifconfig | grep inet\\\\s | grep -v "127.0.0." | sed "s/addr://g"| awk '{print $2}'` function getfreeport() { IPa
vc獲取mac地址(無線網絡卡和有線網絡卡)
獲取網絡卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等。經過測試發現 Netbios 方法在網線拔出的情況下獲取不到MAC,而 SNMP 方法有時會獲取多個重複的網絡卡的MAC,試來試去還是 GetAdaptersInfo 方法比較
Linux修改網絡卡地址(臨時/永久)
1.臨時修改(重啟服務或者重啟系統後失效): ifconfig eth0 192.168.1.1 netmask 255.255.255.0 縮略:ifconfig eth0 192.168.1.1 (eth0是第一個網絡卡,eth1是第二個) 2 永久修改
從ip addr add和ifconfig的區別看linux網絡卡ip地址的結構
今天一個老外在郵件列表上問了一個問題,就是ip addr add和ifconfig的區別,我給他進行了解答,可能因為英語不好吧,解答的很簡單,因此我還是要在這裡詳細說明一下。其實它們之間沒有什麼區別,只 是表述方式不同罷了。如果你非常理解網路協議的原理以及網路的分層架構那麼我想
【查蟲日誌】快速判斷一副灰度影象中是否只有黑色和白色值(即是否為二值影象)過程中bool變數的是是非非。
二值影象我們在影象處理過程中是經常遇到的,有的時候我們在進行一個演算法處理前,需要判斷下一副影象的資料是否符合二值圖的需求,這個時候我們可以寫個簡單的函式來做個判斷,比如我寫了一個很簡單的的程式碼如下: bool IM_IsBinaryImage_C(unsigned char *Src, int
hihocode 1584 : Bounce (找規律)(2017 北京網絡賽G)
hihocode sin scanf 容易 pac pre ace clas esp 題目鏈接 比賽時隨便找了個規律,然後隊友過了。不過那個規律具體細節還挺煩的。剛剛偶然看到Q巨在群裏提到的他的一個思路,妙啊,很好理解,而且公式寫起來也容易。OrzQ巨 #includ
Android裝置支援USB轉RJ45有線網絡卡( 沐陽網絡卡JP1081B/9700)
Android裝置支援USB轉RJ45有線網絡卡( 沐陽網絡卡JP1081B9700) 網絡卡裝置: 沐陽網絡卡JP1081B/9700 系統平臺: HISI3798MV100 Android : 4.2 1、分析網絡卡驅動在ubuntu系統上通過lsusb命令檢視網絡卡的驅動資訊
Android5.1系統啟動過程中啟動有線網絡卡併為其分配靜態IP地址
Android5.1系統啟動過程中啟動有線網絡卡併為其分配靜態IP地址 遇到這個問題的時候剛開始自己以為在init.rc中新增兩行命令就能解決問題,可是後來發現並非如此簡單,所以用下面的文字記錄一下自己解決這個問題的方法。 首先想到的方法是在init.rc中用ifup eth0命令將埠啟動起
Linux軟體安裝及VirtualBox網絡卡地址10.0.2.15ip問題
在VirtualBox中安裝linux(centOS-6-bin-DVD1) 發現ip是10.0.2.15 在用客戶端連線22埠一直不能連線 出現這種情況,是因為VirtualBox的預設網路連線方式為這個: 將它改為【橋接網絡卡】: Linux解壓縮命令
dynamips中網絡卡引數如何和網路連線中的具體網絡卡匹配
使用dynamips可以搭建虛擬的網路環境,所以很多人都知道,但是有一個小疑惑,相信很多人都有,就是如何根據網絡卡引數匹配具體的網絡卡連線,比如我的機器上的網絡卡引數如下: 那麼我們如何根據這些網絡卡引數來找到對應的網路連線呢? 我本機的網路連線如下: 大家仔細觀察,可以發現
配置無線網絡卡和有線網絡卡分別上內外網的方法
場景: 到機房去部署應用,需要內網才可以連線到伺服器,部署的同時可能經常需要查資料,也就需要連線外網,然而同時使用wifi和有線的時候,要麼都走wifi,要麼都走有線,導致內外網不能同時訪問,要一直切換,非常麻煩。 解決方案: 利用route配置路由,然後XXX.XXX.
C#讀取網絡卡地址的幾種方法
轉自:http://www.cnblogs.com/diulela/archive/2012/04/07/2436111.html 以下是收集的幾種C#程式讀取MAC地址的方法,示例中是讀取所有網絡卡的MAC地址,如果僅需要讀取其中一個,稍作修改即可。 1 通過IPCo
cirros 修改網絡卡地址
cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 172.16.0.254 netmask
Win7 + CentOS7 雙系統(----博通無線網絡卡幸運兒)
本來我機子上是Ubantu和Win7的雙系統,用著EasyBCD做的Win7引導Ubantu(雖然Ubantu自帶引導win7,但是本人強迫症,要不然也不會在好好地情況下又裝Centos了~~QAQ,): 1.由於本人之前裝Ubantu是用的U盤
u-boot 新增設定網絡卡地址的命令
#if defined(CONFIG_CMD_PING) static int do_ping(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { if (argc < 2) return -1; NetPingIP = string
資料包接收系列 — 上半部實現(網絡卡驅動)
本文主要內容:網路資料包接收的上半部實現,主要分析網絡卡驅動相關部分。 核心版本:2.6.37 Author:zhangskd @ csdn blog 網絡卡概述 (1) 網絡卡收包 網線上的物理幀首先被網絡卡晶片獲取,網絡卡晶片會檢查物理幀的CRC,保證完整性。 然後
C# 區分無線網絡卡和有線網絡卡的MAC
C# 獲取MAC地址 方法一: 使用 ManagementClass string strMAC = ""; ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjec
全雙工和半雙工模式在網絡卡中的區別以及修改網絡卡速率
在全雙工模式下,8根線都要分別接到水晶頭相應的線序位置上; 在半雙工模式下,只需接4根線,參照T568B標準,一般使用1 、2、3、6 線序位置上的四根線,即:白橙、橙、白綠、綠 四根線; 白橙、橙 用於傳送資料 ,白綠、綠 用於接收資料。 全雙工模式下,網線最大可
筆記本有線網絡卡未識別無法獲取IP地址
一直以來都是使用WIFI連線路由器上網,今天閒著沒事幹找了根網線連線到路由器,發現無法上網,顯示未識別網路. 1,用另外一臺筆記本嘗試一切正常,初步排除路由器和網線出現問題. 2,解除安裝有線網絡卡驅動,重啟,安裝網絡卡驅動,重啟,問題一樣存在,排除驅動問題. 3,開啟路由