Как мне распечатать адрес сервера - PullRequest
3 голосов
/ 06 марта 2012
    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.

Ответы [ 3 ]

7 голосов
/ 06 марта 2012

Используйте inet_ntop(), чтобы преобразовать его в строку

4 голосов
/ 16 октября 2014

Это сработало для меня:

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

inet_ntop(AF_INET, &(sa.sin_addr), buffer, len);
printf("address:%s\n",buffer);

AF_INET используется для обозначения того, что sin_addr указывает на сетевой адрес IPv4. Полученная строка копируется в буферную переменную. Вы должны указать количество байтов, доступных в буфере, в последнем аргументе inet_ntop ().

0 голосов
/ 06 марта 2012

Как и следовало ожидать:

printf("%s", def_server_address);
...