1. 程式人生 > >如何用C語言獲得本機IP地址?(獲取一個ip或者獲取所有ip)

如何用C語言獲得本機IP地址?(獲取一個ip或者獲取所有ip)

        我們可以在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;
}

相關推薦

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

【程式設計之美】C語言實現狀態(實用)

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。 本文連結:https://www.cnblogs.com/lihuidashen/p/11510532.html https://mp.weixin.qq.com/s/xDAfaEFY

C語言求一元二次方根包括虛根

#include <stdio.h> #include <math.h> float a,b,c,result; void underZero(){      float part1 = (-1)*b/(2*a);      float part2

C語言輸出自身的程式原始碼Quine

Quine 在計算機中指的是把自身程式碼輸出的程式,非常有趣。其實這種程式沒有唯一。其實有很多種。下面就列出來幾種。 1、 main(){char *c="main(){char *c=%c%s%c;printf(c,34,c,34);}";printf(c,3 4,c

VS下C++實現的簡單3D射擊遊戲附遊戲檔案與源工程程式碼

記不得什麼時候開始感興趣寫遊戲程式碼了。開始的時候就只是寫一些簡單的小遊戲,打檯球,開小車,走迷宮,用一些2Dgraphics庫,完成每個小作品後都很開心。後來一想,在現在的計算機裝置條件下,2D太簡陋了,於是開始著手做一個3D賽車遊戲。說是賽車,實際上也就只有一輛小車。模

iOS獲取裝置IP地址WiFi,蜂窩資料兩種情況

以下列舉出iOS下獲取IP地址的常用的兩種方式: 第一種適合在WiFi情況下使用,但是如果切換到蜂窩資料下,則返回資料@“error” 直接呼叫getIPAddress 方法即可: #import <ifaddrs.h> #import <arpa/

c#中如何獲取MAC地址IP地址、硬盤ID、CPU序列號等系統信息

finall ipaddress reac 地址 computer mod urn aca rop public class Computer { public static string CpuID; //1.cpu序列號 pub

C#學習筆記】獲得IP

tostring class main style dns system pad space ipad using System; using System.Net; namespace ConsoleApplication { class Prog

Java 網路程式設計1:使用 NetworkInterface 獲得在區域網內的 IP 地址

原文地址:https://segmentfault.com/a/1190000007462741 1、問題提出 在使用 Java 開發網路程式時,有時候我們需要知道本機在區域網中的 IP 地址。很常見的一種做法是呼叫本地命令(比如 Windows 上的 ipconfig 命令和 Li

c#中如何獲取MAC地址IP地址、硬碟ID、CPU序列號等系統資訊

       我們在利用C#開發桌面程式(Winform)程式的時候,經常需要獲取一些跟系統相關的資訊,例如使用者名稱、MAC地址、IP地址、硬碟ID、CPU序列號、系統名稱、實體記憶體等。 首先需要引入名稱空間: using System.Management;

shell 腳創建虛擬 並配置網卡ip地址兩個腳

kvm#######################腳本1:創建虛擬機kvm##########################!/bin/bashqcow2_dir=/var/lib/libvirt/imagesread -p "請輸入虛擬機號碼:" num #主機號if [ $n

獲取ip地址排除虛擬,藍牙等ip

運行 exception play pla 過濾 contains network localhost static 項目中遇到了要獲取本地ip的需求,網上查找資料遇到很多坑,很多Java獲取本機ip地址的方法要麽是根本獲取不到,要麽是獲取的有問題。 網上常見的方法如下 I

Java獲取名稱、MAC地址IP地址

Java獲取本機名稱、本機MAC地址、IP地址 public class Test { public static void main(String[] args) throws Exception { InetAddre

java如何獲得IP

public String getLocalIp(){ InetAddress inetAddress=InetAddress.getLocalHost(); String ip=inetAddress.getHostAddress().toString

(轉)VC獲取MAC地址

環境:w2k  +   vc6.0   說明:這裡只能獲得MAC地址。 #include "stdafx.h"#include   <stdio.h>   #include   <stdlib.h>   #include   <httpext.h>

批處理--工作當中獲取ip地址然後執行一個迴圈啟動指令碼

goto :main rem +++++++獲取本機ip++++++++++++++++++++++++++++++++++++   :get_local_ip   rem 注意 不要照搬某些人的文章,如果你把函式寫成setlocal   dosomething endlocal 這種結構,那麼在這段程式碼中

獲得ipv4和ipv6地址即有線網絡卡地址

程式原始碼如下: 1. 形參ipv4, ipv6為外部呼叫者傳入,用來儲存ipv4地址和ipv6地址, 2. MAX_PATH為自定義巨集, 為數值260, IPVN_SIZE為數值50, DEFAULT_STR_PORT為字串"8080" 3. 需在標頭檔案中包含以下內容

linux下使用ioctl() 獲取mac地址ip地址等等

       在linux下,我們知道可以通過ifconfig獲取mac地址和ip地址等相關資訊,但是如果要使用gcc程式實現的話,我們就需要使用到系統所提供的一個函式ioctl(),iotec函式是對裝置的i/o通道進行管理的函式。由於這個函式用途比較多,如果要學習可以參

VC獲取MAC地址

環境:w2k  +   vc6.0   說明:這裡只能獲得MAC地址。 #include "stdafx.h"#include   <stdio.h>   #include   <stdlib.h>   #include   <httpext.h