in_addr getbcastaddr(){
DWORD dwBytesReturned = 0;
struct sockaddr_in saTarget;
struct sockaddr_in saSource;
in_addr reterr;
reterr.s_addr = INADDR_ANY;
memset(&saSource, 0, sizeof(sockaddr_in));
memset(&saTarget, 0, sizeof(sockaddr_in)); SOCKET hSocket = socket(AF_INET, SOCK_DGRAM, 0);
int nVal = 1;
int nRet = setsockopt (hSocket, SOL_SOCKET, SO_BROADCAST, (char*)&nVal, sizeof(nVal)); saTarget.sin_family = saSource.sin_family = AF_INET;
saTarget.sin_addr.s_addr = inet_addr("255.255.255.255");
if(0 != WSAIoctl(hSocket, SIO_ROUTING_INTERFACE_QUERY, (LPVOID)&saTarget, sizeof(sockaddr_in), (LPVOID)&saSource, sizeof(sockaddr_in), &dwBytesReturned, NULL, NULL))
return reterr;
closesocket(hSocket);
return saSource.sin_addr;
}
-------------------------------------------------------------------
in_addr getthuaddr(){
unsigned long ipmask[3];
ipmask[0] = inet_addr("59.66.0.0");
ipmask[1] = inet_addr("166.111.0.0");
ipmask[2] = inet_addr("162.105.0.0");
in_addr temp;
temp.s_addr = INADDR_ANY; char LocalName[255];
struct hostent *pHost;
gethostname(LocalName,sizeof(LocalName)-1);
pHost = gethostbyname((char *)LocalName);
for ( int i=0; ; i++ )
{
memcpy(&temp,pHost->h_addr_list[i],pHost->h_length);
myiplist.insert(temp.S_un.S_addr);
for(int j = 0; j < 3; j++)
if((ipmask[j] & temp.s_addr) == ipmask[j])
return temp;
if ( pHost->h_addr_list[i] + pHost->h_length >= pHost->h_name )
break;
}
return temp;
}1、帮忙解释下setsockopt()和 WSAIoctl()这2个函数执行的结果是什么。
2、 pHost->h_addr_list[i] + pHost->h_length >= pHost->h_name 是什么意思。
3、这2个函数最后的返回值是什么。表示的是什么意思。
DWORD dwBytesReturned = 0;
struct sockaddr_in saTarget;
struct sockaddr_in saSource;
in_addr reterr;
reterr.s_addr = INADDR_ANY;
memset(&saSource, 0, sizeof(sockaddr_in));
memset(&saTarget, 0, sizeof(sockaddr_in)); SOCKET hSocket = socket(AF_INET, SOCK_DGRAM, 0);
int nVal = 1;
int nRet = setsockopt (hSocket, SOL_SOCKET, SO_BROADCAST, (char*)&nVal, sizeof(nVal)); saTarget.sin_family = saSource.sin_family = AF_INET;
saTarget.sin_addr.s_addr = inet_addr("255.255.255.255");
if(0 != WSAIoctl(hSocket, SIO_ROUTING_INTERFACE_QUERY, (LPVOID)&saTarget, sizeof(sockaddr_in), (LPVOID)&saSource, sizeof(sockaddr_in), &dwBytesReturned, NULL, NULL))
return reterr;
closesocket(hSocket);
return saSource.sin_addr;
}
-------------------------------------------------------------------
in_addr getthuaddr(){
unsigned long ipmask[3];
ipmask[0] = inet_addr("59.66.0.0");
ipmask[1] = inet_addr("166.111.0.0");
ipmask[2] = inet_addr("162.105.0.0");
in_addr temp;
temp.s_addr = INADDR_ANY; char LocalName[255];
struct hostent *pHost;
gethostname(LocalName,sizeof(LocalName)-1);
pHost = gethostbyname((char *)LocalName);
for ( int i=0; ; i++ )
{
memcpy(&temp,pHost->h_addr_list[i],pHost->h_length);
myiplist.insert(temp.S_un.S_addr);
for(int j = 0; j < 3; j++)
if((ipmask[j] & temp.s_addr) == ipmask[j])
return temp;
if ( pHost->h_addr_list[i] + pHost->h_length >= pHost->h_name )
break;
}
return temp;
}1、帮忙解释下setsockopt()和 WSAIoctl()这2个函数执行的结果是什么。
2、 pHost->h_addr_list[i] + pHost->h_length >= pHost->h_name 是什么意思。
3、这2个函数最后的返回值是什么。表示的是什么意思。
解决方案 »
- ping命令乱打网址都能ping通?
- ???图像及视频的色温转换....???谁整过...给段代码....
- 为什么select第一次返回0,再循环就返回-1了呢?
- mfc下用GDI画图出现内存一直增长
- 谈谈编程(1) 编程概述
- 找不到MFC42D.dll,怎么办??急!
- 向窗体上放一个按钮,然后双击,希望能进入这个按钮的CLICK事件来编程,可总是被提醒“cannot add new member",这是怎么回事呀,
- 如何从richedit中导出jpg、gif等图片保存
- vs2013的一个bug
- 我装上一个叫'网页大挪移'的网页下载工具后,再使用IE时无论往地址栏中输入网站域名或者IP,在IE下面的状态栏中都会显示"正在连接站点127.0.0.1",结果所有的网站都打不开了,请问这是怎么回事?
- MFC高手请进
- 今天下班之前要解决的问题,急!
2.也就是 pHost->h_addr_list[i] + pHost->h_length 的和是否大于等于pHost->h_name