获取子网的广播地址

头文件:

typedef struct taghqNetAddrInfo
{
DWORD dwIndex;
DWORD dwAddr;
DWORD dwMask;
DWORD dwBCast;
DWORD dwCalcBCast;
}ThqNetAddrInfo;
int GetNetAddrInfoBySocket(SOCKET sock,std::vector<ThqNetAddrInfo>& vtInfo);

CPP:

int GetNetAddrInfoBySocket(SOCKET sock,std::vector<ThqNetAddrInfo>& vtInfo)
{
	INTERFACE_INFO InterfaceList[20];
	unsigned long nBytesReturned;
	if (WSAIoctl(sock, SIO_GET_INTERFACE_LIST, 0, 0, &InterfaceList,
			sizeof(InterfaceList), &nBytesReturned, 0, 0) == SOCKET_ERROR) {
		cerr << "Failed calling WSAIoctl: error " << WSAGetLastError() <<
				endl;
		return 1;
	}

	int nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO);
	ThqNetAddrInfo dwInfo;
	for (int i = 0; i < nNumInterfaces; ++i) {
		dwInfo.dwIndex = i;
		dwInfo.dwAddr = InterfaceList[i].iiAddress.AddressIn.sin_addr.s_addr;
		dwInfo.dwMask = InterfaceList[i].iiNetmask.AddressIn.sin_addr.s_addr;
		dwInfo.dwBCast = InterfaceList[i].iiBroadcastAddress.AddressIn.sin_addr.s_addr;
		dwInfo.dwCalcBCast = dwInfo.dwAddr&dwInfo.dwMask|~dwInfo.dwMask;
		vtInfo.push_back(dwInfo);
	}
	return nNumInterfaces;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值