gpt4 book ai didi

c - 使用C打印服务器IP地址

转载 作者:行者123 更新时间:2023-11-30 19:28:56 27 4
gpt4 key购买 nike

下午好,战士们,

我有一个有关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 Program to Display IP Address

最佳答案

INADDR_ANY不是地址,最好使用一些有效的单播地址来检查printf。
以下是有关INADDR_ANY的帖子
Understanding INADDR_ANY for socket programming

关于c - 使用C打印服务器IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com