Linux C打印IP地址信息
2016-02-04 15:49
597 查看
1、由文件描述符打印IP地址及端口。(参考)
参考链接:
1、怎么获取绑定的socket的地址的端口号
2、Linux下靠谱的获取本机IP地址的C代码实现
*** walker ***
#include <stdio.h> #include <netdb.h> #include <sys/socket.h> #include <arpa/inet.h> //由文件描述符打印对应IP地址和端口 void PrintAddrByFd(int sockfd) { struct sockaddr_in addr_in; socklen_t len = sizeof(addr_in); getsockname(sockfd, (struct sockaddr *)&addr_in, &len); if (addr_in.sin_family != AF_INET) { printf("Not an Internet socket.\n"); return; } printf("addr:%s, port:%d\n", inet_ntoa(addr_in.sin_addr), ntohs(addr_in.sin_port)); }2、打印本机所有IP地址。
#include <stdio.h> #include <ifaddrs.h> #include <netinet/in.h> //打印本机所有IP地址 int main (int argc, const char * argv[]) { struct ifaddrs * ifAddrStruct = NULL; void * tmpAddrPtr = NULL; getifaddrs(&ifAddrStruct); while (ifAddrStruct != NULL) { if (ifAddrStruct->ifa_addr->sa_family == AF_INET) { // check it is IP4 // is a valid IP4 Address tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr; char addressBuffer[INET_ADDRSTRLEN]; inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); printf("%s IPV4 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); } else if (ifAddrStruct->ifa_addr->sa_family == AF_INET6) { // check it is IP6 // is a valid IP6 Address tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr; char addressBuffer[INET6_ADDRSTRLEN]; inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); printf("%s IPV6 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); } ifAddrStruct = ifAddrStruct->ifa_next; } return 0; }
参考链接:
1、怎么获取绑定的socket的地址的端口号
2、Linux下靠谱的获取本机IP地址的C代码实现
*** walker ***
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- 房产界已上市和IPO路上的难兄难弟:房天下与房多多
- 雷军是谁,他为什么而奋斗?小米上市和雷军的英雄主义
- java socket 注意的地方
- java socket 注意的地方
- IP网络路由技术
- 如何利用“IP地址欺骗”
- 新手看招:避免网络 IP 地址被非法修改
- 端口详解(3)-源端口
- 网络管理之IP地址篇
- ip地址基础知识
- 脚本之家因服务器资源紧张 换了ip并升级了带宽
- 常见路由器关闭端口
- IP地址组成与类型
- 计算机名DNS网关IP(大家可以用来学习)
- Windows2003下批量添加和导出所有ip BAT脚本
- C#基于socket模拟http请求的方法
- 一个能对访问者进行编号、记录访问次数、IP、时间的统计制作实例