распечатать IP-адрес сервера с помощью C - PullRequest
0 голосов
/ 23 ноября 2018

Добрый день, воины,

У меня вопрос по поводу inet_ntoa () .Я впервые пишу свой первый сервер на C и на платформе Linux.

Пожалуйста, посмотрите на мой код ниже.Моя цель - напечатать адрес сервера.Я надеюсь увидеть IP-адрес.Тем не менее, он ничего не печатает!Я выделил проблемные команды в ** **.

примечание: клиенты не подключаются;Я еще написал один.

int main (int argc, char * arg[])
{
     int listenfd = 0, connfd = 0;
     struct sockaddr_in serv_addr;
     char sendBuff[1025];
     time_t ticks; 
     char *ip;  
     struct in_addr serv_ip; 
     char str[INET_ADDRSTRLEN]; 

    listenfd = socket(AF_INET, SOCK_STREAM, 0); 
    memset(&serv_addr, '0', sizeof(serv_addr)); 
    memset(sendBuff, '0', sizeof(sendBuff));   
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(5000); 
    bind(listenfd,  (struct sockaddr*)&serv_addr, sizeof (serv_addr)); 
    **ip = inet_ntoa(serv_addr.sin_addr);**
    // serv_ip = serv_addr. sin_addr;  
   //ip = inet_ntop(AF_INET, &serv_ip, str, INET_ADDRSTRLEN); 
    printf("server: waiting for connection uwu...\n"); 
    **printf("server address: %s", ip);**
    listen(listenfd, 10); 

    while(1) {
       connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 
       ticks = time(NULL); 
       snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n",
       ctime(&ticks)); 
       write(connfd, sendBuff, strlen(sendBuff)); 
       close(connfd); 
       sleep(1); 
      }
   }

С уважением

ОБНОВЛЕНИЕ

Нашли решение;Я постоянно забываю использовать методы, которые уже доступны для достижения этой цели, такие как gethostname () . C Программа для отображения IP-адреса

1 Ответ

0 голосов
/ 24 ноября 2018

INADDR_ANY не является адресом, лучше использовать какой-нибудь действительный адрес одноадресной рассылки для проверки printf.Ниже приведен пост о INADDR_ANY Понимание INADDR_ANY для программирования сокетов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...