【发布时间】:2014-04-07 21:11:01
【问题描述】:
我正在尝试将连接到我的服务器的任何客户端的 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));
当我运行之前的代码时,我得到了 Segmentation fault (core dumped)。
我还用以下内容替换了最后一行,但我得到了同样的错误:
inet_ntop(AF_INET, &(client_addr->sin_addr), client_ip, INET_ADDRSTRLEN);
那么问题出在哪里?
【问题讨论】:
标签: c linux berkeley-sockets