C 将IP地址转换为文本形式时出现分段错误
我正在尝试将连接到我的服务器的任何客户端的IP地址转换为文本格式,如下所示:C 将IP地址转换为文本形式时出现分段错误,c,linux,berkeley-sockets,C,Linux,Berkeley Sockets,我正在尝试将连接到我的服务器的任何客户端的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 = acce
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));
那么问题出在哪里呢?看起来您必须为客户端地址分配空间(使用malloc) 答案上有一些代码:
看起来您必须为客户端地址分配空间(使用malloc) 答案上有一些代码:
您尚未为
客户端地址分配内存。
可能只是
struct sockaddr_in client_addr
而不是
struct sockaddr_in *client_addr = NULL;
您尚未为客户端地址分配内存。
可能只是
struct sockaddr_in client_addr
而不是
struct sockaddr_in *client_addr = NULL;