a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

linux c 獲取本機公網IP的實現方法

2020-02-24 14:28:10
字體:
來源:轉載
供稿:網友

在穿透Linux環境時,有時由于權限或其他原因不能使用ifconfig命令,可以使用以下方法查看外部網絡IP,下面就跟著武林技術頻道小編的步伐來學習linux c 獲取本機公網IP的實現方法吧。

1、linux c代碼實現

?

?

?


#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>
typedef enum {false,true}bool;
int main()
{
??? bool flag;
??? int??? sock;
??? char **pptr = NULL;
??? struct sockaddr_in??? destAddr;
??? struct hostent??? *ptr = NULL;
??? char destIP[128];
??? char szBuffer[] = {"GET /ip2city.asp HTTP/1.1/r/nHost:www.ip138.com/r/nConnection:Close/r/n/r/n"};
??? char res[1024];

  //初始化socket
??? sock = socket(AF_INET,SOCK_STREAM,0);
??? if( -1 == sock ){
??????? perror("creat socket failed");
??????? exit(0);
??? }

??? bzero((void *)&destAddr,sizeof(destAddr));
??? destAddr.sin_family = AF_INET;???????
??? destAddr.sin_port = htons(80);
?  //首先是獲取www.ip138.com的IP地址
??? ptr = gethostbyname("www.ip138.com");
??? if(NULL == ptr){
??????? perror("gethostbyname error");
??????? exit(0);
??? }??
  //對于www.ip138.com的每個IP進行嘗試連接,直到有一個連接成功為止,或者無法連接,則退出程序
??? for(flag=false,pptr=ptr->h_addr_list ; NULL != *pptr ; ++pptr){
??????? inet_ntop(ptr->h_addrtype,*pptr,destIP,sizeof(destIP));
??????? printf("addr:%s/n",destIP);
??????? destAddr.sin_addr.s_addr = inet_addr(destIP);
??????? if(-1!=connect(sock,(struct sockaddr *)&destAddr,sizeof(struct sockaddr))){
??????????? flag = true;
??????????? break;
??????? }
??? }

??? if(false == flag){
??????? perror("connect failed");
??? }

  //發送獲取IP的數據包給www.ip138.com
??? if(strlen(szBuffer) != send(sock,szBuffer,strlen(szBuffer),0)){
??????? perror("send error");
??????? exit(0);
??? }

  //接收數據包
??? if(-1 == recv(sock,res,1024,0)){
??????? perror("recv error");
??????? exit(0);
??? }

??? printf("res:/n%s/n",res);???
??? return 0;
}


2、將上述代碼保存getip.c,并使用如下命令編譯

?

?

?


gcc -o getip getip.c


3、運行程序

?

?

?


./getip

?以上就是武林技術頻道小編給大家介紹的linux c 獲取本機公網IP的實現方法,看完都明白了吧,希望以上內容對大家有所幫助,更多技術必備知識請關注本站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: a级在线| 中文字幕在线免费视频 | 国产精品一区久久久久 | 中文字幕一区二区三区不卡 | 精品国产乱码久久久久久1区2区 | 黄篇网址| 国产一区在线免费 | 久久精品系列 | 国产精品日韩 | 夸克满天星在线观看 | 久久精品8 | 三级特黄特色视频 | 国产精品一区99 | 亚洲 欧美日韩 国产 中文 | 国产精品美女久久久久aⅴ国产馆 | 国产激情久久久久影院小草 | 欧美午夜视频在线观看 | 国产伦精品一区二区三区四区视频 | 国产精品入口免费视频一 | 狠狠色丁香婷婷综合 | 国产成人精品午夜视频' | 国产日韩精品一区二区 | 亚洲精品久久久久久久久久久久久 | 成人在线观看一区 | 探花 在线 | 一区二区手机在线 | 亚洲一区二区中文 | 日韩中文字幕免费在线播放 | 一二三区字幕免费观看av | 青青草久草在线 | 另类国产ts人妖高潮系列视频 | www婷婷av久久久影片 | 精品999 | 中文字幕久久综合 | 青青草视频网站 | 黄色免费在线播放 | 中文字幕在线一区观看 | 色噜噜视频在线观看 | 日韩免费视频 | 九色欧美| 久久理论片 |