怎么得到机器的 IP,subnet mask?
能不能提供相关的源代码!
谢谢!
问题点数:10、回复次数:6Top
1 楼aiyue2010(亚伦)回复于 2005-06-03 09:24:47 得分 5
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData)) {
printf("WSAStartup failed %s\n", WSAGetLastError());
return -1;
}
SOCKADDR_IN sockStruct; //SOCKET 结构
sockStruct.sin_family=AF_INET; //使用TCP/IP协议
sockStruct.sin_port = htons(8001);
sockStruct.sin_addr.S_un.S_addr = inet_addr("172.31.21.59");
char strIP[100];
WSAAddressToString((LPSOCKADDR)&sockStruct, WSAEnumProtocols(),sizeof(sockStruct), strIP, 100);
//////////////////
// Get host name.
//
char hostname[256];
int res = gethostname(hostname, sizeof(hostname));
if (res != 0) {
printf("Error: %u\n", WSAGetLastError());
return -1;
}
printf("hostname=%s\n", hostname);
////////////////
// Get host info for hostname.
//
hostent* pHostent = gethostbyname(hostname);
if (pHostent==NULL) {
printf("Error: %u\n", WSAGetLastError());
return -1;
}
//////////////////
// Parse the hostent information returned
//
hostent& he = *pHostent;
printf("name=%s\naliases=%s\naddrtype=%d\nlength=%d\n",
he.h_name, he.h_aliases, he.h_addrtype, he.h_length);
sockaddr_in sa;
for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++) {
memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length);
// Output the machines IP Address.
printf("Address: %s\n", inet_ntoa(sa.sin_addr)); // display as string
}
//////////////////
// Terminate windows sockets API
//
WSACleanup();
Top
2 楼newman0708(nch)回复于 2005-06-04 08:49:36 得分 0
编译不过去
错误指在这里:
WSAAddressToString((LPSOCKADDR)&sockStruct, WSAEnumProtocols(),sizeof(sockStruct), strIP, 100);
h:\my_bag\VC++.net\C++_file\Basic_study\BasicMain.cpp(48): error C2660: “WSAEnumProtocolsA” : 函数不接受 0 个参数
Top
3 楼o1n(小毛子)回复于 2005-06-04 22:29:25 得分 3
char szhostname[128];
//»ñµÃÖ÷»úÃû
if( gethostname(szhostname, 128) == 0 )
{
// »ñµÃÖ÷»úipµØÖ·
struct hostent * phost;
int i;
phost = gethostbyname(szhostname);
m_hostname=szhostname;
i=0;
int j;
int h_length=4;
for( j = 0; j<h_length; j++ )
{
CString addr;
if( j > 0 )
str += ".";
addr.Format("%u", (unsigned int)((unsigned
char*)phost->h_addr_list[i])[j]);
str += addr;
}
}
m_ipaddress=str;
UpdateData(FALSE);Top
4 楼newman0708(nch)回复于 2005-06-07 21:06:03 得分 0
编译不过去
错误指在这里:
WSAAddressToString((LPSOCKADDR)&sockStruct, WSAEnumProtocols(),sizeof(sockStruct), strIP, 100);
h:\my_bag\VC++.net\C++_file\Basic_study\BasicMain.cpp(48): error C2660: “WSAEnumProtocolsA” : 函数不接受 0 个参数
我想要C++和API的,不想用VC的。
Top
5 楼newman0708(nch)回复于 2005-06-13 19:52:19 得分 0
自己顶!Top
6 楼qrlvls( 空 气 )回复于 2005-06-14 07:42:32 得分 2
使用 IP Helper API
Top




