gpt4 book ai didi

c - 为什么我的 ip 地址 [] 被覆盖了?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:17 26 4
gpt4 key购买 nike

我正在尝试编写服务器/客户端代码并且一切正常,除了当我尝试存储传入和传出连接的 IP 地址时。

getpeername(new_fd[client],(struct sockaddr*) &client_addr[client],&addr_size);
ip_address[client] = inet_ntoa(client_addr[client].sin_addr);

在这种情况下,当建立连接时,每个索引的内容将更改为最新建立的连接。所以 ip_address[] 的每个单元格都将包含最新连接的 IP 地址。可能是什么问题?

最佳答案

inet_ntoa 通常看起来像这样:

char *
inet_ntoa(struct in_addr ina)
{
static char buf[some_size];
/* a series of sprintfs */
return bufl
}

这意味着在每次调用时,buf 的内容都将被重写。显然不能直接使用inet_ntoa的返回值;你将不得不使用 memcpy 或类似的东西。

真正的解决方案

使用inet_ntop反而。它较新,开箱即用地支持 IPv6 并且应该是线程安全的(哦,是的,inet_ntoa 不是)。

关于c - 为什么我的 ip 地址 [] 被覆盖了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480822/

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