判断大端序小端序: 通常情况下,数值在内存中存储的方式有两种,一种是大尾字节序,另一种是小尾,比如0x01020304这样一个数值,如果用大尾方式存储,其存储方式为01 02 03 04而用小尾方式存储则是04 03 02 01,一般Windows操作系统兼容的CPU为小尾方式,而UNIX操作系统所兼容的CPU多为大尾方式,通过使用两种方法即可判断大小纬。

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") // 变量法判断
void GetA()
{
DWORD dwSmallNum = 0x01020304;
if (*(BYTE *)&dwSmallNum == 0x04)
printf("小端字节序 \n");
else
printf("大端字节序 \n");
} // 直接转换法判断
void GetB()
{
DWORD dwSmallNum = 0x01020304;
if (dwSmallNum == htonl(dwSmallNum))
printf("大端字节序 \n");
else
printf("小端字节序 \n");
} int main(int argc, char *argv[])
{
GetA();
GetB(); system("pause");
return 0;
}

利用域名获取IP: 通过使用winsocket库中的gethostbyname()可以将一个域名所对应的别名,地址类型等信息提取出来。

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") BOOL GetHostByName(char * HostName)
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
return FALSE; struct hostent *ptr = gethostbyname(HostName);
if (!ptr){ return FALSE; } printf("地址类型: %s \n", (ptr->h_addrtype == AF_INET) ? "IPV4" : "IPV6"); for (int i = 0; ptr->h_aliases[i]; i++){
printf("别名 [%d]: %s \n", i + 1, ptr->h_aliases[i]);
} for (int i = 0; ptr->h_addr_list[i]; i++){
printf("IP地址 [%d]: %s \n", i + 1, inet_ntoa(*(struct in_addr*)ptr->h_addr_list[i]));
}
WSACleanup();
return TRUE;
} int main(int argc ,char *argv[])
{
GetHostByName("www.baidu.com");
system("pause");
return 0;
}

取自身主机名IP地址: 有时候我们需要得到自身IP地址,这里我封装了两种获取IP地址的方法。

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") char * GetLocalHostName()
{
WSADATA wsaData;
HOSTENT *pHost;
char szHostName[256]; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
exit(0); if (gethostname(szHostName, 256) == 0)
{
char *Host;
Host = (char *)malloc(1024);
pHost = gethostbyname(szHostName);
strcpy(Host, pHost->h_name);
return Host;
}
return "";
} char * GetLocalHostAddr(int Count)
{
WSADATA wsaData;
HOSTENT *pHost;
char szHostName[256]; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
exit(0); if (gethostname(szHostName, 256) == 0)
{
char tmp[15];
char *Addr;
pHost = gethostbyname(szHostName);
int index = 0; for (; index < 10; index++)
{
if (pHost->h_addr_list[index] == NULL)
break;
} sprintf(tmp, "%d.%d.%d.%d",
pHost->h_addr_list[0][0] & 0xff,
pHost->h_addr_list[0][1] & 0xff,
pHost->h_addr_list[0][2] & 0xff,
pHost->h_addr_list[0][3] & 0xff); Addr = (char *)malloc(15);
strcpy(Addr, tmp);
return Addr;
}
return "";
} int main(int argc, char *argv[])
{
char *hostname = GetLocalHostName();
printf("本机名字: %s \n", hostname); char *hostaddr = GetLocalHostAddr(0);
printf("本机IP: %s \n", hostaddr); system("pause");
return 0;
}

C/C++ 获取自身IP与域名片段的更多相关文章

  1. 【ASP.NET】#001 获取服务器IP

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...

  2. Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip

    获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #in ...

  3. 【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!

    写在前面 Nginx最为最受欢迎的反向代理和负载均衡服务器,被广泛的应用于互联网项目中.这不仅仅是因为Nginx本身比较轻量,更多的是得益于Nginx的高性能特性,以及支持插件化开发,为此,很多开发者 ...

  4. 编写Java程序,根据提供的 IP 地址,获取主机名称和域名

    查看本章节 查看作业目录 需求说明: 根据提供的 IP 地址,获取主机名称和域名 实现思路: 创建 GetHostNameByIpAddress 类,在main方法中声明 String 类型的变量 i ...

  5. 域名可以解析(ping域名可以获取正确ip),服务器本地telnet 域名+端口 无法连接,通过建立本地虚拟域名指定的方法解决该问题

    环境: 服务器A,网管已为A开通外网ip,且设置有映射域名:假如内网ip为172.16.2.6.外网ip为123.123.123.123.域名为test.sstest.com 现象: 服务器A,tel ...

  6. Linux下的C Socket编程 -- 获取对方IP地址

    Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...

  7. 一个服务器上面配置多个IP ,实现指定IP的域名请求

    //配置多个IP命名using System.Net; //********************************************************************** ...

  8. nginx 反向代理 取得真实IP和域名

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  9. 再论 ASP.NET 中获取客户端IP地址

    说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分 ...

  10. c#中HttpWebRequest使用Proxy实现指定IP的域名请求

    原文:http://www.cnblogs.com/greenerycn/archive/2010/04/11/httpwebreques_host_modify_By_set_proxy.html ...

随机推荐

  1. SSL 证书过期巡检脚本

    哈喽大家好,我是咸鱼 我们知道 SSL 证书是会过期的,一旦过期之后需要重新申请.如果没有及时更换证书的话,就有可能导致网站出问题,给公司业务带来一定的影响 所以说我们要每隔一定时间去检查网站上的 S ...

  2. C++ 标准库 智能指针

    C++没有垃圾回收,因此 new 出来的对象都要自己管理 为了方便的管理内存,我们发现垃圾回收中引用计数的思路很简单就能在 C++中实现,而其实标准库中就已经有这样的实现,也就是智能指针 它们的头文件 ...

  3. Educational Codeforces Round 110 (Rated for Div. 2) (AB签到,C题双指针,D题DP好题)

    补题链接:Here 1535A. Fair Playoff 四名选手参加了季后赛.比赛按以下方案进行:第一名选手与第二名选手比赛,第三名选手与第四名选手比赛,然后两人中的获胜者进入决赛. 众所周知,在 ...

  4. VS2019 16.8下载安装

    昨天,想升级到 net5版本,发现在vs2019上始终发现不了它,考虑好几个小时,终于狠下心,把vs2019卸载了,重新装一次.耗费了一个晚上,先将安装过程写下来,以供参考 第一步, 到 微软官网 h ...

  5. python进度条实现的几种方法

    一.普通进度条(time实现) import time def progress_bar(): for i in range(101): print(f'\rProgress: {"#&qu ...

  6. 每天学五分钟 Liunx 100 | 存储篇:磁盘分区

    这一节主要介绍 Liunx 是怎么用磁盘的. 磁盘分区 在 Liunx 中一切皆文件,磁盘在 Liunx 中也是文件,包括 /dev/hd[a-d](以 IDE 为接口) 和 /dev/sd[a-p] ...

  7. SV 并发线程

    内容 assign d = a & b; assign e = b | c; begin...end之间的语句是串行执行的 fork....join语句是并行执行的 逻辑仿真工具中的并发性 仿 ...

  8. [转帖]一文读懂 | 如何快速部署 OceanBase 开源版

    2021-11-281398 版权 本文涉及的产品 云数据库 RDS MySQL Serverless,0.5-2RCU 50GB 推荐场景: 学生管理系统数据库设计搭建个人博客 立即试用 云防火墙, ...

  9. [转帖]Docker与k8s的恩怨情仇(四):云原生时代的闭源落幕

    https://zhuanlan.zhihu.com/p/388840887 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天我们继续来为大 ...

  10. [转帖]TiKV 多副本丢失以及修复实践

    https://tidb.net/blog/ad45bad9#6%E6%80%BB%E7%BB%93 1实验目的 随着tidb使用场景的越来越多,接入的业务越来越重要,不由得想试验下tidb组件的高可 ...