windows和linux環境中分別如何用C語言獲得本機IP地址?
一、Windows情形
我們可以在cmd中敲入ipconfig來獲取本機ip地址,下面寫個程式來獲取本機ip地址(結果相同):
#include<stdio.h> #include<winsock2.h> #pragma comment(lib,"ws2_32.lib") // 靜態庫 void findIP(char *ip, int size) { WORD v = MAKEWORD(1, 1); WSADATA wsaData; WSAStartup(v, &wsaData); // 載入套接字型檔 struct hostent *phostinfo = gethostbyname(""); char *p = inet_ntoa (* ((struct in_addr *)(*phostinfo->h_addr_list)) ); strncpy(ip, p, size - 1); ip[size - 1] = '\0'; WSACleanup( ); } int main() { char ip[20] = {0}; findIP(ip, sizeof(ip)); printf("%s\n", ip); return 0; }
上面的程式僅僅獲取一個ip, 那要獲取所有ip, 怎麼辦呢? 很簡單, 充分利用上面的list啊, 如下:
#include<stdio.h> #include<winsock2.h> #pragma comment(lib,"ws2_32.lib") // 靜態庫 void getIPs() { WORD v = MAKEWORD(1, 1); WSADATA wsaData; WSAStartup(v, &wsaData); // 載入套接字型檔 int i = 0; struct hostent *phostinfo = gethostbyname(""); for(i = 0; NULL != phostinfo&& NULL != phostinfo->h_addr_list[i]; ++i) { char *pszAddr = inet_ntoa(*(struct in_addr *)phostinfo->h_addr_list[i]); printf("%s\n", pszAddr); } WSACleanup( ); } int main() { getIPs(); return 0; }
二、Linux下情形
#include <stdio.h>; #include <sys/types.h>; #include <sys/socket.h>; #include <sys/ioctl.h>; #include <netinet/in.h>; #include <net/if.h>; #include <net/if_arp.h>; #include <arpa/inet.h>; #include <errno.h>; #define ETH_NAME "eth0" int main() { int sock; struct sockaddr_in sin; struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) { perror("socket"); return -1; } strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; if (ioctl(sock, SIOCGIFADDR, &ifr) < 0) { perror("ioctl"); return -1; } memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr)); return 0; }
相關推薦
windows和linux環境中分別如何用C語言獲得本機IP地址?
一、Windows情形 我們可以在cmd中敲入ipconfig來獲取本機ip地址,下面寫個程式來獲取本機ip地址(結果相同): #include<stdio.h> #include<winsock2.h>
如何用C語言獲得本機IP地址?(獲取一個ip或者獲取所有ip)
我們可以在cmd中敲入ipconfig來獲取本機ip地址,下面寫個程式來獲取本機ip地址(結果相同): #include<stdio.h> #include<win
Linux下C語言獲取本機IP地址
#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h> char* GetLocalIp() { int MA
C語言獲取本機IP地址
char* getIpAddress(){ WSADATA wsaData; char name[255];//定義用於存放獲得的主機名的變數 char *ip;//定義IP地址變數 PHOSTENT hostinfo;
C語言 獲取本機IP地址,非迴環地址
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #inc
【C#】獲取本機IP地址
前言 最近開始做牛腩新聞釋出系統,剛接觸網頁開發,因為沒有基礎,做起來比較困難,當然BUG就多了。不過“牛”老師水平很高,講的很清楚,出現BUG分分鐘就可以搞定。在做評論新聞這一功能時,需要獲取本機的IP地址。這時就出現BUG了。 BUG 根據“牛”老師的方法: IP
開發問題(一)在windows和linux端口占用問題
logs ets 情況 toc 端口占用 所有 註意 linu eclips 前言 今天在MyEclipse中使用tomcat發現tomcat端口8080竟然被占用了,所以就找了一下解決辦法共參考! 在網絡程序的調試過程中,經常發生一些出乎意料的事情,比如創建一
JAVA環境變數在Windows和linux環境下的配置
一丶 如果是Win7或Win8,使用滑鼠右擊"我的電腦"->屬性->高階->環境變數 系統變數->新建->變數名:JAVA_HOME 變數值:JDK對應的安裝目錄 系統變數->新建->變數名:CLASSPATH 變數值:.;%JAVA_HOME%\l
windows、linux環境中javacv視訊抓圖
踩過不少坑,特此記錄一下。遇到的問題基本是在windows執行沒問題,然後在linux環境下各種報錯 比如這樣的: 這樣的 廢話少說。 據瞭解到有兩種方法能實現視訊抓圖 1、ffmpeg 下載地址:http://www.ff
mongodb基礎(安裝MongoDB 資料庫(Windows 和Linux 環境))
開啟官網:https://www.mongodb.com/download-center?jmp=nav#community 選擇Community Server 4.0.1 的版本。 安裝與啟動 在D 盤建立安裝目錄,D:\MongoDB,將解壓後的檔案拷入新建的
Windows和Linux環境下搭建SVN伺服器
--------------------------Windows下搭建SVN伺服器----------------------------- 一、安裝SVN服務端 軟體包Setup-Subversion-1.8.17.msi,下載地址:https://source
Windows和Linux之間ftp自動上傳下載腳本
ftp一、Windows主機自動從Linux ftp服務器下載文件 二、Linux主機自動從Windows ftp服務器下載文件Windows和Linux之間ftp自動上傳下載腳本
windows下用C++獲取本機IP地址
ali 返回 轉換成 data info AC ctrl nag != BSTR CamUtilsCtrl::GET_TERM_IP(void){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString strResult
linux c 獲取本機ip地址
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <
Linux下靠譜的獲取本機IP地址的C程式碼實現
#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> #include <netinet/in.h> #include <string
Linux下C程式設計實現---獲取本機IP地址
在LINUX下,如果需要獲取本機的IP地址,需要用到以下一個結構體,該結構體在/usr/include/net/if.h檔案中 struct ifreq { # define IFHWADDRLEN 6 # define IFNAMSIZ IF_
【程式設計之美】用C語言實現狀態機(實用)
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。 本文連結:https://www.cnblogs.com/lihuidashen/p/11510532.html https://mp.weixin.qq.com/s/xDAfaEFY
【C#學習筆記】獲得本機IP
tostring class main style dns system pad space ipad using System; using System.Net; namespace ConsoleApplication { class Prog
清除被隱藏網卡占用的IP地址,本機IP地址被占用
mac 菜單 ntc ip地址 evm tar 設置 devices 修改註冊表 清除被隱藏網卡及占用的IP地址,本機IP地址被占用當主機中的網卡更換或換了一個插槽時,還要用到原來網卡的IP地址,但系統提示IP地址已經被本機中網卡占用,而主機裏確實只有剛插入的網卡,這個原
shell中獲取本機ip地址
align 本機ip www. .cn logs res font 地址 獲取本機ip 方法一: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr