online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <vector> #include <cstring> #include <ifaddrs.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> struct AliasString { std::string str; AliasString(const std::string& s) : str(s) {} }; struct NetworkAdapterInfo { struct IpAddrString { typedef std::vector<IpAddrString> List; AliasString ip; explicit IpAddrString(const AliasString& ip_) : ip(ip_) {} }; AliasString adapterName; AliasString description; AliasString adapterUserName; std::vector<unsigned char> physicalAddress; IpAddrString::List ipList; explicit NetworkAdapterInfo(const AliasString& adapterName_, const AliasString& description_, const AliasString& adapterUserName_, IpAddrString::List const& ipList_, std::vector<unsigned char> const& physicalAddress_) : adapterName(adapterName_), description(description_), adapterUserName(adapterUserName_), ipList(ipList_), physicalAddress(physicalAddress_) {} }; void getAdaptersInfo(std::vector<NetworkAdapterInfo>& adapterList) { struct ifaddrs* ifAddrStruct = nullptr; struct ifaddrs* ifa = nullptr; if (getifaddrs(&ifAddrStruct) == -1) { perror("getifaddrs"); return; } for (ifa = ifAddrStruct; ifa != nullptr; ifa = ifa->ifa_next) { if (ifa->ifa_addr == nullptr || ifa->ifa_addr->sa_family != AF_INET) { continue; // Skip non-IPv4 addresses } // Get the adapter name AliasString adapterName(ifa->ifa_name); AliasString description("N/A"); // Description is not directly available in Linux AliasString userName("N/A"); // User name is not directly available in Linux // Get the IP address char addressBuffer[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in*)ifa->ifa_addr)->sin_addr, addressBuffer, sizeof(addressBuffer)); NetworkAdapterInfo::IpAddrString::List ipList; ipList.push_back(NetworkAdapterInfo::IpAddrString(AliasString(addressBuffer))); // Get the MAC address std::vector<unsigned char> physicalAddress; if (ifa->ifa_addr->sa_family == AF_PACKET) { physicalAddress.assign(ifa->ifa_addr->sa_data, ifa->ifa_addr->sa_data + 10); } adapterList.push_back(NetworkAdapterInfo(adapterName, description, userName, ipList, physicalAddress)); } freeifaddrs(ifAddrStruct); } int main() { std::vector<NetworkAdapterInfo> adapterList; getAdaptersInfo(adapterList); // Output the adapter information for (const auto& adapter : adapterList) { std::cout << "Adapter Name: " << adapter.adapterName.str << std::endl; std::cout << "Description: " << adapter.description.str << std::endl; std::cout << "User Name: " << adapter.adapterUserName.str << std::endl; std::cout << "IP Addresses: "; for (const auto& ip : adapter.ipList) { std::cout << ip.ip.str << " "; } std::cout << std::endl; std::cout << "Physical Address: "; for (const auto& byte : adapter.physicalAddress) { std::cout << std::hex << (int)byte << ":"; } std::cout << std::dec << std::endl << std::endl; } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue