You can use GetComputerName (or gethostname) and gethostbyname (see WINSOCK2.H) for this. Remember that a computer can have more than one IP address - it can have multiple adapters, or be supporting extra addresses for RAS purposes.
Bear in mind that this code uses Winsock functionality, so a successful call to WSAStartup is a pre-requisite.
HOSTENT* phe ; char szCpuName [128] ; DWORD dwSize = sizeof(szCpuName); int iaddr, ifield; UINT uField; CString csIpAddr; CString csAddrField; if (GetComputerName (szCpuName, &dwSize) == 0) { wsprintf (szCpuName, "Can't get computer name, error %d", GetLastError ()); AfxMessageBox (szCpuName); } else { phe = gethostbyname (szCpuName); if (phe != NULL) { for (iaddr=0; phe->h_addr_list[iaddr] != NULL; iaddr++) { csIpAddr = ""; for (ifield=0; ifield < phe->h_length; ifield++) { if (ifield > 0) csIpAddr += "."; uField = ((BYTE*)phe->h_addr_list[iaddr])[ifield]; csAddrField.Format("%u", uField); csIpAddr += csAddrField; } // Do what you want with the address here. I add it to a listbox. m_ctrlListbox.AddString (csIpAddr); } } }Download