我正在尝试将连接到我的服务器的任何客户端的 IP 地址转换为文本形式,如下所示:
struct sockaddr_in *client_addr = NULL;
socklen_t addrlen = sizeof(struct sockaddr_in);
char client_ip[INET_ADDRSTRLEN];
printf("Waiting for incomming connections!\n");
if ((client.fd = accept(server_fd, (struct sockaddr *) client_addr, &addrlen)) < 0)
{
perror("Accept() API failed.");
continue;
}
// Convert Client address from binary to text.
strcpy(client_ip, inet_ntoa(client_addr->sin_addr));
当我运行前面的代码时,我得到分段错误(核心转储)。
我还用以下内容替换了最后一行,但我得到了同样的错误:
inet_ntop(AF_INET, &(client_addr->sin_addr), client_ip, INET_ADDRSTRLEN);
所以有什么问题?