遍匈 / socket園殻 /

壓socket嶄聞喘囃兆

<貧匯准 和匯准>
人薩極嶄岷俊聞喘IP仇峽氏嗤載寄議益極?匯稀IP仇峽延晒?IP仇峽氏将械延強??人薩極罷周祥氏竃孖危列。

遇聞喘囃兆氏圭宴載謹?廣過朔議囃兆峪勣耽定偬継祥喟垓奉噐徭失議?厚算IP仇峽扮俐個囃兆盾裂軸辛?音氏唹峒罷周議屎械聞喘。

購噐囃兆廣過、囃兆盾裂、host 猟周、DNS 捲暦匂吉云准旺隆峋聾讐盾?萩響宀徭佩辻温。云准嶷泣讐盾泌採聞喘囃兆。

宥狛囃兆資函IP仇峽

囃兆叙叙頁IP仇峽議匯倖廁芝憲?朕議頁圭宴芝吮?宥狛囃兆旺音嬬孀欺朕炎柴麻字?宥佚岻念駅倬勣繍囃兆廬算撹IP仇峽。

gethostbyname() 痕方辛參頼撹宸嶽廬算?万議圻侏葎?
struct hostent *gethostbyname(const char *hostname);
hostname 葎麼字兆?匆祥頁囃兆。聞喘乎痕方扮?峪勣勧弓囃兆忖憲堪?祥氏卦指囃兆斤哘議IP仇峽。卦指議仇峽佚連氏廾秘 hostent 潤更悶?乎潤更悶議協吶泌和?
struct hostent{
 char *h_name; //official name
 char **h_aliases; //alias list
 int h_addrtype; //host address type
 int h_length; //address lenght
 char **h_addr_list; //address list
}
貫乎潤更悶辛參心竃?音峪卦指IP仇峽?珊氏現揮凪麿佚連?光了響宀峪俶購廣恷朔匯倖撹埀 h_addr_list。和中頁斤光撹埀議傍苧?
  • h_name?郊圭囃兆?Official domain name?。郊圭囃兆旗燕蝶匯麼匈?徽糞縞貧匯乂广兆巷望議囃兆旺隆喘郊圭囃兆廣過。
  • h_aliases?艶兆?辛參宥狛謹倖囃兆恵諒揖匯麼字。揖匯IP仇峽辛參鰯協謹倖囃兆?咀緩茅阻輝念囃兆珊辛參峺協凪麿囃兆。
  • h_addrtype?gethostbyname() 音叙屶隔 IPv4?珊屶隔 IPv6?辛參宥狛緩撹埀資函IP仇峽議仇峽怛?仇峽窃侏?佚連?IPv4 斤哘 AF_INET?IPv6 斤哘 AF_INET6。
  • h_length?隠贋IP仇峽海業。IPv4 議海業葎4倖忖准?IPv6 議海業葎16倖忖准。
  • h_addr_list?宸頁恷嶷勣議撹埀。宥狛乎撹埀參屁方侘塀隠贋囃兆斤哘議IP仇峽。斤噐喘薩熟謹議捲暦匂?辛嬬氏蛍塘謹倖IP仇峽公揖匯囃兆?旋喘謹倖捲暦匂序佩譲財減墮。

hostent 潤更悶延楚議怏撹泌和夕侭幣?


和中議旗鷹麼勣處幣 gethostbyname() 議哘喘?旺傍苧 hostent 潤更悶議蒙來?
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
int main(){
 WSADATA wsaData;
 WSAStartup( MAKEWORD(2, 2), &wsaData);
 struct hostent *host = gethostbyname("www.baidu.com");
 if(!host){
 puts("Get IP address error!");
 system("pause");
 exit(0);
 }
 //艶兆
 for(int i=0; host->h_aliases[i]; i++){
 printf("Aliases %d: %s\n", i+1, host->h_aliases[i]);
 }
 //仇峽窃侏
 printf("Address type: %s\n", (host->h_addrtype==AF_INET) ? "AF_INET": "AF_INET6");
 //IP仇峽
 for(int i=0; host->h_addr_list[i]; i++){
 printf("IP addr %d: %s\n", i+1, inet_ntoa( *(struct in_addr*)host->h_addr_list[i] ) );
 }
 system("pause");
 return 0;
}
塰佩潤惚?
Aliases 1: www.baidu.com
Address type: AF_INET
IP addr 1: 61.135.169.121
IP addr 2: 61.135.169.125
<貧匯准 和匯准>

AltStyle によって変換されたページ (->オリジナル) /