1. 程式人生 > >socket獲取本機IP地址方法

socket獲取本機IP地址方法

    獲取計算機的名稱和IP地址可以通過呼叫winsock裡面的函式完成,下面上是用到的函式:1.WSAStartup(),此函式在應用程式中初始化windows sockets DLL,這個函式呼叫成功後,才可以呼叫其他的api函式。

2.WSACleanup()函式,應用程式會佔用系統資源,這個函式用來解除與socket的繫結,並且釋放佔用的系統資源。

3.gethostname() 用於獲取本地主機的主機名

4.gethostbyname()gethostname()獲取的主機名可以傳入gethostbyname,獲取“主機列表”。一臺主機可以有多個IP地址,為了輸出所有IP地址,要用一個迴圈來實現。

#include <iostream>
using namespace std;
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSAData data;
if(WSAStartup(MAKEWORD(1,1),&data)!=0)
{
   cout<<"初始化錯誤endl ;
}
  
char host[255];
if(gethostname(host,sizeof(host))==SOCKET_ERROR)
{
   cout<<"無法獲取主機名"<<endl;
}
else
{
   cout<<"本機計算機名為:"<<host<<endl;
}

struct hostent *p=gethostbyname(host);
if(p==0)
{
   cout<<"無法獲取計算機主機名及IP"<<endl;
}
else
{
     
   //本機IP:利用迴圈,輸出本機所有IP
   for(int i=0;p->h_addr_list[i]!=0;i++)
   {
    struct in_addr in;
    memcpy(&in,p->h_addr_list[i],sizeof(struct in_addr));
    cout<<"第"<<i+1<<"塊網絡卡的IP為:"<<inet_ntoa(in)<<endl;
   }

}

WSACleanup();

cin.get();
return 0;
}

上面的程式碼中,gethostbyname的返回值送入了hostent結構體中,hostent結構體在winsock2.h中宣告

 hostent的定義如下:

struct hostent{

char *h_name;

char **h_aliases;

int h_addrtype;

int h_length;

char **h_addr_list;

# define h_addr h_addr_list[0];

};

h_name   為地址名稱

h_aliases 地址的預備名稱指標

h_addtype  地址型別

h_length   地址的長度

h_addr_list  主機網路地址指標

h_addr   h_add_list 的第一個地址


相關推薦

socket獲取IP地址方法

    獲取計算機的名稱和IP地址可以通過呼叫winsock裡面的函式完成,下面上是用到的函式:1.WSAStartup(),此函式在應用程式中初始化windows sockets DLL,這個函式呼叫成功後,才可以呼叫其他的api函式。 2.WSACleanup()函式,

window上獲取IP地址方法--windows程式設計

使用獲取本地地址的方法比較多,簡單點的就是ipconfig命令就好了,本地網路之類的圖形介面而本次是使用作為一個程式設計師的方式來獲取本地的ip地址。 InitSock.h如下: #include &

Python+socket獲取IP地址

import socket hostname = socket.gethostname() IPinfo = socket.gethostbyname_ex(hostname) LocalIP = IPinfo[2][0]  # [2][0] 2保持不變,如果刪除[0

linux程式設計獲取IP地址的三種方法

                這是一項不太清晰而且沒有多大意義的工作。一個原因是網路地址的設定非常靈活而且都是允許使用者進行個性

SOCKET 程式設計 獲取IP 地址

源程式: #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #

獲取IP地址的小腳

ash class p地址 nbsp 地址 int done 獲取本機 onf 獲取本機私網地址(1個) 1 #!/bin/bash 2 # Author : standby 3 # Date : 2017-05-18 4 # D

unity 獲取ip地址

ipa mil work get hostname [] 本機 取ip gethost IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); //Dns.GetHostName()獲取本機名Dns.GetH

獲取IP地址

down pos -m 兩個 div mar inter 獲取本機ip地址 work 問題描述 一臺電腦有IPV4地址和IPV6地址,目前使用的基本是IPV4地址, 有些情況還有多個網卡,有線的、無線的、還有vmare虛擬的兩個網卡。 獲取所有的IP地址 //獲取本機IP

windows下用C++獲取IP地址

ali 返回 轉換成 data info AC ctrl nag != BSTR CamUtilsCtrl::GET_TERM_IP(void){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString strResult

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

C++ 獲取ip地址

C++/MFC  獲取本地計算機的所有IP string m_LocalIP1;//IP地址臨時變數 string m_LocalIP2; LPCSTR psz; //獲得本地計算機名 char PCnameBuffer[128]; string m_PCname; //初始化

Linux下C語言獲取IP地址

#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h>   char* GetLocalIp() { int MA

【C#】獲取IP地址

前言    最近開始做牛腩新聞釋出系統,剛接觸網頁開發,因為沒有基礎,做起來比較困難,當然BUG就多了。不過“牛”老師水平很高,講的很清楚,出現BUG分分鐘就可以搞定。在做評論新聞這一功能時,需要獲取本機的IP地址。這時就出現BUG了。 BUG 根據“牛”老師的方法: IP

linux c 獲取ip地址

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <

python 獲取IP地址,檢測埠是否被佔用

import socket def get_host_ip(): """ get host ip address 獲取本機IP地址 :return: """ s = socket.socket(socket.

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

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

NSIS獲取IP地址寫入配置檔案

安裝一個應用程式的時候需要獲取當前的網絡卡IP地址,即伺服器IP地址,同時寫入到配置檔案。NSIS提供了獲取IP地址的外掛,IP-plugin,詳情請看:http://nsis.sourceforge.net/IP_plug-in 外掛安裝很簡單,只需要下載dll檔案,拷貝到

C語言獲取IP地址

char* getIpAddress(){ WSADATA wsaData; char name[255];//定義用於存放獲得的主機名的變數 char *ip;//定義IP地址變數 PHOSTENT hostinfo;

iOS專案開發實戰——獲取IP地址

     在設計iOS網路開發中,我們需要獲取本機的IP地址,那麼通過Swift呼叫OC如何來實現呢?我將會通過一個Swift的iOS專案,然後通過呼叫OC的方法,來實現這個功能。 (1)在Swift專案中新建Cocoa Touch Class,語言選擇Objective-

php獲取IP地址

<?php function get_local_ip() { $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4