首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从udp-socket(C/C++)获取自己的(本地)IP地址

要从UDP套接字(C/C++)获取本地IP地址,可以使用以下步骤:

  1. 首先,需要包含必要的头文件。
代码语言:cpp
复制
#include<iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include<stdio.h>
#include <stdlib.h>
  1. 定义一个函数,用于获取本地IP地址。
代码语言:cpp
复制
void getLocalIPAddress() {
    // 初始化WSA
    WSADATA wsaData;
    int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (result != 0) {
        std::cout << "WSAStartup failed: "<< result<< std::endl;
        return;
    }

    // 创建UDP套接字
    SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (sock == INVALID_SOCKET) {
        std::cout << "socket failed: " << WSAGetLastError()<< std::endl;
        WSACleanup();
        return;
    }

    // 设置套接字选项
    struct sockaddr_in sa;
    sa.sin_family = AF_INET;
    sa.sin_addr.s_addr = htonl(INADDR_ANY);
    sa.sin_port = htons(0);

    if (bind(sock, (SOCKADDR*)&sa, sizeof(sa)) == SOCKET_ERROR) {
        std::cout << "bind failed: " << WSAGetLastError()<< std::endl;
        closesocket(sock);
        WSACleanup();
        return;
    }

    // 获取本地IP地址
    INTERFACE_INFO InterfaceList[20];
    unsigned long nBytesReturned;
    if (WSAIoctl(sock, SIO_GET_INTERFACE_LIST, NULL, 0, &InterfaceList, sizeof(InterfaceList), &nBytesReturned, NULL, NULL) == SOCKET_ERROR) {
        std::cout << "WSAIoctl failed: " << WSAGetLastError()<< std::endl;
        closesocket(sock);
        WSACleanup();
        return;
    }

    int count = nBytesReturned / sizeof(INTERFACE_INFO);
    for (int i = 0; i< count; ++i) {
        sockaddr_in *pAddress = (sockaddr_in*)&(InterfaceList[i].iiAddress);
        char ipAddress[20];
        inet_ntop(AF_INET, &(pAddress->sin_addr), ipAddress, sizeof(ipAddress));
        std::cout << "IP Address: " << ipAddress<< std::endl;
    }

    // 关闭套接字并清理WSA
    closesocket(sock);
    WSACleanup();
}
  1. 在主函数中调用getLocalIPAddress()函数。
代码语言:cpp
复制
int main() {
    getLocalIPAddress();
    return 0;
}

这样,你就可以从UDP套接字获取本地IP地址了。请注意,这个示例仅适用于Windows操作系统,并依赖于Winsock2库。如果你使用的是其他操作系统或库,请根据相应的文档进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux下编程获取本地IP地址常见方法

脱离了网络连接,单独网络地址没有任何意义。编程中遇到必须获取计算机IP场景,应该考虑将这一选项放到配置文件中,由用户自己来设置。 参考网络和书本,编程获取本机IP地址大约有以下几种方法。...IP地址 如果建立TCP连接情况下,可以通过getsockname和getpeername函数来获取本地和对端IP和端口号。...(peeraddr.sin_port)<<endl; return 1; } } ---- 下面两种方法,都是通过主机名称来获取主机IP地址,在获取本地IP地址时,一般都是回环地址,但可以有效根据主机名称获取网络中主机...方法三:getaddrinfo()获取本地IP地址 注意,getaddrinfo()可以完成网络主机中主机名和服务名到地址映射,但是一般不能用来获取本地IP地址,当它用来获取本地IP地址时,返回一般是...但是要想获取本地IP地址时候,一般获取是回环地址127.0.0.1。

7.8K20

Kubernetes Pod 是如何获取 IP 地址

Kubernetes 网络模型核心要求之一是每个 Pod 都拥有自己 IP 地址并可以使用该 IP 地址进行通信。...例如,他们了解什么是 CNI 插件,但是不知道它们是如何被调用。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互,以及如何帮助每个 Pod 都获取 IP 地址。...Linux Bridge 也被分配了一个 IP 地址,它充当目的地到不同节点 Pod 流出流量网关。...主机本地 IPAM CNI 插件 Bridge CNI 插件使用以下配置调用主机本地 IPAM CNI 插件: 主机本地 IPAM(IP 地址管理)插件从中返回容器 IP 地址,subnet将分配... podCIDR 中子网值为节点上 Pod 分配了 IP 地址。由于所有节点上 podCIDR 是不相交子网,因此它允许为每个 pod 分配唯一IP地址

33020

如何优雅获取 Mac OS 系统 IP 地址

比如,在获取电脑 IP 地址时候,windows 电脑使用 ipconfig 命令就能非常方便获取。但是,在苹果电脑上,使用类似的命令工具 ifconfig 却不那么方便了。...因为系统会打印出很多无用网卡信息,那么我们如何能够在 Mac 系统上优雅获取 IP 地址呢?这就是我们今天想要介绍内容。...正文 我们都知道,在 windows 电脑上使用 ipconfig 命令就能非常方便获取本机 IP 地址。Mac 上也有类似的命令工具———— ifconfig,但是并不是很好用。...终极命令: ifconfig | grep "inet " | grep -v 127.0.0.1 让我看一下执行效果: 完美,言简意赅,直接打印了我们想要 IP 地址信息:192.168.3.16...结尾 哈哈,直到今天,终于知道如何在苹果电脑上优雅用命令行获取 IP 地址信息了,感兴趣小伙伴,自己赶紧复制粘贴命令试试吧!

3K00

如何获取QQ微信好友IP地址

通过监控网络通讯过程中数据包,从而捕获QQ/微信好友IP地址,这早已不是秘密,而这种方式依然有效。 在网络世界里,有了IP地址,就可以获取大概地理位置。...如果对方使用公司网络/家庭WiFi,定位IP基本是比较准确,但是如果手机使用4G/代理,或是开启了虚拟定位,那么结果就会存在比较大偏差。...2、获取QQ好友IP地址 当我与好友发起语音/视频通话,无需接听就可以获取ip地址。通过排除一些干扰项,很快可以确定IP:218.xxx.xxx.92,从而准确定位到好友位置。 ?...3、获取微信好友IP地址 当我与好友微信发起语音聊天,需好友接听以后,就可以获取IP地址。可以发现,同样可以获取IP:218.xxx.xxx.92。 ?...你所使用每一款社交软件,可能正在泄露你隐私,不要随意添加陌生人为好友,不要接陌生人语音,不要给别人侵犯我们隐私机会。

19.5K20

获取IP地址途径有哪些?要如何保护IP地址不被窃取?

图片电脑IP地址是互联网分配给每台电脑在网络里标识,它是唯一,只要知道了某台电脑IP地址我们就可以知道它在网络里相对位置,可以通过一些技术手段对此电脑进行攻击或者潜入该电脑窃取信息。...网上一些恶意用户对其它用户攻击首先就是要取得其它用户IP地址。那么,在网络上一些常见IP地址途径有哪些?我们又该如何预防并保护我们IP地址信息不被窃取呢?...常见追踪IP地址途径有:一.利用IP探测器追踪用户IP。...选“常规”,在“历史纪录”中,“网页保存在历史纪录中天数"选0天。二. 使用代理服务器(PROXY)使用代理服务器上网可以在我们上一些不可靠网站时保护我们自己IP。...图片同时我们在平时上网时候要做到一下几点:1. 设置好自己浏览器。主要是将安全程度设置到较高状态。

1.5K20

如何获取高质量静态住宅ip,建立自己静态ip代理池?

获取高质量ip,则是建立属于自己ip代理池关键。 如何判断及获取高质量静态住宅ip? 静态住宅ip是指不会更改且由互联网服务提供商(ISP)为家庭或个人分配ip地址。...一些数据采集工具也提供了ip获取功能,比如Octoparse、ParseHub等。 如何建立属于自己ip代理池?...这些工具可以根据用户需求从公开代理ip网站上爬取ip,也可以使用私有的ip池进行筛选和获取。 4、检查代理ip可用性 获取到代理ip后,需要进行可用性检查,筛选出可用ip地址。...5、建立属于自己ip代理池 建立属于自己ip代理池需要将获取可用代理ip存储到本地或者云服务器中。...建立好自己ip代理池后,可以根据实际需求将其应用于爬虫、数据采集、网络安全等方面,提高数据获取效率和安全性。

1.2K20

IP地址分类——a,b,c 类是如何划分【转】

IP地址,一共分成了5类,范围分别如下: A类IP0.0.0.0 – 127.255.255.255,共有16777216个IP B类IP128.0.0.0 – 191.255.255.255...,共有65536个IP CIP192.0.0.0 – 223.255.255.255,共有256个IP D类IP224.0.0.0 – 239.255.255.255 E类IP2240.0.0.0...以上所述A B C地址均为外网地址。为了便于内网访问,A B C地址还留出了一部分私有地址作为内网地址供内网访问。具有内网ip物理机可以通过 NAT技术与外网通讯。...A类私有IP地址: 10.0.0.0~10.255.255.255 B类私有IP地址: 172.16.0.0~172.31.255.255 C类私有IP地址: 192.168.0.0~192.168.255.255...至于选择哪类私有地址,要根据内网规模了。

2.5K40

每日一题 C++版(分类有效IP地址和掩码)

因此小白决定开辟一个新板块“每日一题”,通过每天一道编程题目来强化和锻炼自己编程能力(最起码不会忘记编程) 特别说明:编程题来自“牛客网”和“领扣”以及热心小伙伴题目。...要求按照A/B/C/D/E类地址归类,不合法地址和掩码单独归类。...所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C地址192.0.0.0~223.255.255.255...输出描述: 统计A、B、C、D、E、错误IP地址或错误掩码、私有IP个数,之间以空格隔开。...但是小白当时得出结果是60%通过,A类地址少一个。这是因为私有IP地址和A,B,C,D,E类地址是不冲突,什么意思呢?就是A,B,C,D,E类地址也可以是私有地址,只要他们符合私有地址规则。

1.2K30

C++如何代码到游戏

C++如何代码到游戏 这个简单啊。 你既然问C++了,那我问你,现在,我有一个Student类。C++怎么创建一个学生类对象? // 嗯我会!...就是这样咯,你学过C++基础语法,结合现有的框架控件,就可以撸这样一个简单连连看。 当然了,为了点燃你题目里想要学习热情,我故意避开一些以你现有知识可能听不懂部分,还有一些逻辑比较绕部分。...比如: 避开了注册按钮回调, 避开了随机生成图片时候要保证成对出现算法, 避开了把这些按钮和数据做关联, 避开了如何通过数据计算两点能否连通, 等等 但这都不重要,不妨碍你简单体验一下C++如何代码到游戏这个过程...这个玩意儿是用Qt C++。因为本身对帧率没什么要求,所以基于Qt就可以搞。如果要玩一些真正游戏(画面需要帧率级别的刷新),一定要上游戏引擎写。cocos2d unity3d 什么。...Qt本身没有提供这种直接用图片构造控件方法,所以就自己造了一些。 写下它时候还是大四刚毕业,那时候我还把这玩意儿叫框架,现在...

90230

如何使用CloakQuest3r获取受安全服务保护网站真实IP地址

关于CloakQuest3r CloakQuest3r是一款功能强大纯Python工具,该工具可以帮助广大研究人员获取和查看受Cloudflare和其他安全服务商保护网站真实IP地址。...Cloudflare是一种广泛采用网络安全和性能增强服务,而CloakQuest3r核心任务就是准确识别隐藏在Cloudflare防护下网络服务器真实IP地址。...在CloakQuest3r帮助下,我们可以轻松评估网站安全性,扫描其中潜在安全漏洞,并通过披露隐藏在Cloudflare安全防护下IP地址来提升网络资产安全性。...如果检测到了Cloudflare,工具首先会打印历史IP记录,然后扫描子域名并识别其真实IP地址。...此时,所有成功识别的真实IP地址都会打印出来,以供研究人员执行进一步安全分析和渗透测试。

18610

如何使用IPGeo捕捉网络流量文件中快速提取IP地址

关于IPGeo  IPGeo是一款功能强大IP地址提取工具,该工具基于Python 3开发,可以帮助广大研究人员捕捉到网络流量文件(pcap/pcapng)中提取出IP地址,并生成CSV格式报告...在生成报告文件中,将提供每一个数据包中每一个IP地址地理位置信息详情。  ...报告中包含内容  该工具生成CSV格式报告中将包含下列与目标IP地址相关内容: 1、国家; 2、国家码; 3、地区; 4、地区名称; 5、城市; 6、邮编; 7、经度;...8、纬度; 9、时区、 10、互联网服务提供商; 11、组织机构信息; 12、IP地址;  依赖组件  在使用该工具之前,我们首先需要使用pip3包管理器来安装该工具所需依赖组件...,你还需要手动安装Tshark: sudo apt install tshark  工具安装  由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。

6.6K30
领券