目的是这样的:希望往本地连接的IPv4地址发送组播信息。
本来好好的代码,换成笔记本后就收不到信息了。几经查找发现笔记本中存在很多个网络,包括蓝牙网络,本地连接,无线网络,还有两个vmware虚拟网络。大部分网络里面还有ipv4和ipv6地址。默认网络不是本地连接的ipv4地址。而我的代码里面写成了
mcast.imr_interface.s_addr = htonl(INADDR_ANY);选用了默认网络。
都不知道选成哪个网络了。
改成mcast.imr_interface.s_addr = inet_addr("192.168.20.181");就成功了。现在问题是如何自动在众多的网络中自动选择本地连接的IPv4网络呢?
本来好好的代码,换成笔记本后就收不到信息了。几经查找发现笔记本中存在很多个网络,包括蓝牙网络,本地连接,无线网络,还有两个vmware虚拟网络。大部分网络里面还有ipv4和ipv6地址。默认网络不是本地连接的ipv4地址。而我的代码里面写成了
mcast.imr_interface.s_addr = htonl(INADDR_ANY);选用了默认网络。
都不知道选成哪个网络了。
改成mcast.imr_interface.s_addr = inet_addr("192.168.20.181");就成功了。现在问题是如何自动在众多的网络中自动选择本地连接的IPv4网络呢?
解决方案 »
- AD中,知道用户名,怎么获取他对应的组名
- 关于CListCtrl的排序问题!
- 请问谁有<<面向软件工程的visual c++网络程序开发>>孙晓刚 韩东等编著 收到给分
- 请教关于一个socket和多线程的服务器端问题。
- 大家帮帮忙!QQ主界面是怎么实现的啊?高分求助!!!
- 讨论:File是什么?
- 求写一个C语言小程序!
- WIN32 API中怎么样才能完整的接受到用户输入的一个整数值呢?
- RichEdit中怎么捕捉paste的发生?
- 安装NuMega DriverStudio2.5时候出现的问题:安装中提示我输入DDK的目录,我随便输入了一个路径,结果安装出现警告让我选YES或NO,我没看提示就点了NO,不知道会发生什么。
- 停靠窗体
- C++ 驱动开发里调用GDI问题
看见以下方法 gethostname(host_name, sizeof(host_name));
printf("Host name is: %s\n", host_name);
//从主机名数据库中得到对应的“主机”
struct hostent *phe = gethostbyname(host_name);
//循环得出本地机器所有IP地址
for (int i = 0; phe->h_addr_list[i] != 0; ++i)
{
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
printf("Address %d : %s\n" , i, inet_ntoa(addr));
}此程序可以列出所有的ipv4的地址,但仍然分不开哪个是本地连接,哪个是无线连接,哪个是虚拟网络。
求教
gethostname(host_name, sizeof(host_name));
printf("Host name is: %s\n", host_name);
//从主机名数据库中得到对应的“主机”
struct hostent *phe = gethostbyname(host_name);
//循环得出本地机器所有IP地址
for (int i = 0; phe->h_addr_list[i] != 0; ++i)
{
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
printf("Address %d : %s\n" , i, inet_ntoa(addr));
}此方法可以获取所有ipv4地址,但分不开哪个是本地连接,哪个是无线连接,哪个是虚拟网络。
求教