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

问题描述 投票:3回答:3
    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);

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

c ip-address printf
3个回答
8
投票

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


4
投票

对我有用:

inet_ntop()

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


-1
投票

就像您期望的那样:

struct sockaddr_in sa;
int len=20;
char buffer[len];

inet_ntop(AF_INET, &(sa.sin_addr), buffer, len);
printf("address:%s\n",buffer);
© www.soinside.com 2019 - 2024. All rights reserved.