我应该如何打印服务器地址

use*_*772 4 c printf ip-address

    int server_sockfd, client_sockfd; //server and client filedescriptors
    socklen_t server_len, client_len; 
    struct sockaddr_in server_address; //server address
    struct sockaddr_in client_address; //client address
    int server_port = 10000;
    char *def_server_address ="127.0.0.1";

    server_len = sizeof(server_address);
    memset(&server_address, 0, server_len );
    server_address.sin_family = AF_INET;

    if (x == 1) {
        server_address.sin_addr.s_addr = INADDR_ANY;}
    else {
        server_address.sin_addr.s_addr = inet_addr(def_server_address);
    }
    server_address.sin_port = htons(server_port);
Run Code Online (Sandbox Code Playgroud)

我应该如何从server_address打印服务器的地址?使用printf.

Thi*_*ter 9

使用inet_ntop()将其转换为字符串


小智 6

这对我有用:

struct sockaddr_in sa;
char buffer[INET_ADDRSTRLEN];
inet_ntop( AF_INET, &sa.sin_addr, buffer, sizeof( buffer ));
printf( "address:%s\n", buffer );
Run Code Online (Sandbox Code Playgroud)

AF_INET 用于表示 sin_addr 指向 IPv4 网络地址。结果字符串被复制到缓冲区变量。您应该在 inet_ntop() 的最后一个参数中指定缓冲区中可用的字节数。