Добрый день, воины,
У меня вопрос по поводу 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-адреса