91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++如何獲取本機ip

c++
小億
133
2024-08-01 19:39:11
欄目: 編程語言

要在C++中獲取本機IP地址,可以使用如下方法:

#include <iostream>
#include <string>
#include <winsock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

int main() {
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "WSAStartup failed" << std::endl;
        return 1;
    }

    char hostname[256];
    if (gethostname(hostname, sizeof(hostname)) == SOCKET_ERROR) {
        std::cerr << "Error getting hostname" << std::endl;
        WSACleanup();
        return 1;
    }

    struct addrinfo* result = NULL;
    struct addrinfo hints;

    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;

    if (getaddrinfo(hostname, NULL, &hints, &result) != 0) {
        std::cerr << "Error getting address info" << std::endl;
        WSACleanup();
        return 1;
    }

    struct sockaddr_in* addr = (struct sockaddr_in*) result->ai_addr;
    char ip[INET_ADDRSTRLEN];
    inet_ntop(AF_INET, &addr->sin_addr, ip, sizeof(ip));

    std::cout << "Hostname: " << hostname << std::endl;
    std::cout << "IP Address: " << ip << std::endl;

    freeaddrinfo(result);
    WSACleanup();

    return 0;
}

這段代碼首先初始化Winsock庫,然后使用gethostname函數獲取本地主機名,接著使用getaddrinfo函數獲取主機地址信息,最后通過inet_ntop函數將sockaddr_in結構體中的IP地址轉換為字符串格式并輸出。

0
盐池县| 乐山市| 应城市| 洞头县| 郸城县| 鸡西市| 中西区| 甘肃省| 通城县| 深泽县| 双柏县| 灵丘县| 永德县| 乌拉特后旗| 克东县| 清水县| 敦化市| 福泉市| 玉树县| 凌源市| 永定县| 封开县| 壤塘县| 宜州市| 新化县| 黄山市| 德清县| 莎车县| 资源县| 抚州市| 鄂托克前旗| 绥中县| 大新县| 宿州市| 黄陵县| 宁远县| 报价| 庆云县| 丹寨县| 女性| 根河市|