使用下面的兩個屬性可以獲取本機的名稱和IP地址,但子網掩碼和網關不知道怎么獲取^_^
UdpSocket1->LocalHostName();
UdpSocket1->LocalHostAddr();
uj5u.com熱心網友回復:
這個組件沒這個功能,可以用system("ipconfig >> tt.txt")從tt.txt找到掩碼和網關uj5u.com熱心網友回復:
獲取子網掩碼和網關,可以用iphlpapi中的函式。uj5u.com熱心網友回復:
MSDN里面的代碼:PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;
pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);
}
if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
pAdapter = pAdapterInfo;
while (pAdapter) {
printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
printf("\tAdapter Addr: \t%ld\n", pAdapter->Address);
printf("\tIP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String);
printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);
printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
printf("\t***\n");
if (pAdapter->DhcpEnabled) {
printf("\tDHCP Enabled: Yes\n");
printf("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String);
printf("\tLease Obtained: %ld\n", pAdapter->LeaseObtained);
}
else
printf("\tDHCP Enabled: No\n");
if (pAdapter->HaveWins) {
printf("\tHave Wins: Yes\n");
printf("\t\tPrimary Wins Server: \t%s\n", pAdapter->PrimaryWinsServer.IpAddress.String);
printf("\t\tSecondary Wins Server: \t%s\n", pAdapter->SecondaryWinsServer.IpAddress.String);
}
else
printf("\tHave Wins: No\n");
pAdapter = pAdapter->Next;
}
}
else {
printf("Call to GetAdaptersInfo failed.\n");
}
uj5u.com熱心網友回復:
//*******得到本機機名函式*********String GetHostName(void){
//回傳的是本機的網路名
WSAData wsaData;
String OutStr = "";
String PCName = "";
String HostNameGet;
char AHost[50];
WSAStartup(MAKEWORD(2, 0), &wsaData);
gethostname(AHost, 50);
HostNameGet = AHost;
struct hostent* hp = gethostbyname(HostNameGet.c_str());
PCName = hp->h_name;
OutStr = PCName;
WSACleanup();
return OutStr;
};
//---------------------------------------------------------------------------
//*******得到本機IP函式*********
String GetHostIPAddress(String HostNameIn,int ListNO)
{//依網路名得到IP地址,引數1為網路名,引數2為多IP情況下的不同IP
WSAData wsaData;
String PCName = "";
String IPAddress;
String OutStr = "";
struct hostent* hp;
char AHost[50];
WSAStartup(MAKEWORD(2, 0), &wsaData);
hp = gethostbyname(HostNameIn.c_str());
try{
IPAddress = inet_ntoa(*(struct in_addr*)hp->h_addr_list[ListNO]);
OutStr = IPAddress;
}catch(...){
OutStr = "";
}
WSACleanup();
return OutStr;
}
//---------------------------------------------------------------------------
uj5u.com熱心網友回復:
謝樓上幾個兄弟回復,我再試試^_^轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143331.html
標籤:網絡及通訊開發
上一篇:為什么你應該在相等比較中使用 Object.is()
下一篇:組件的設計原理
