gpt4 book ai didi

C++ getpeername 返回 0.0.0.0 :0

转载 作者:行者123 更新时间:2023-11-27 23:22:15 31 4
gpt4 key购买 nike

我正在尝试获取连接到服务器套接字的客户端的 IP 和端口。我传递了以下函数客户端套接字文件描述符,但它返回 0.0.0.0:0这让我发疯,但有时它会返回类似 248.127.0.0:24870 的内容...我做错了什么?

PS返回地址长度为16,函数返回结果为0,没有错误发生。

void    SocketServer::Log ( int socketFD , string message )
{
struct sockaddr address;
socklen_t addressLength;
struct sockaddr_in* addressInternet;
string ip;
int port;

int result = getpeername ( socketFD , &address , &addressLength );
cout << "Address length is " << addressLength << " Return is " << result << "\n";
addressInternet = (struct sockaddr_in*)&address;

ip = inet_ntoa ( addressInternet->sin_addr );
port = ntohs ( addressInternet->sin_port );

cout << "Socket FD is " << socketFD << " " << ip << ":" << port << " " << message << "\n";
};

最佳答案

在调用 getpeername 之前,您忘记设置 addressLength。你需要:

addressLength = sizeof(address);

正如文档所说:

The returned address is truncated if the buffer provided is too small

关于C++ getpeername 返回 0.0.0.0 :0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994712/

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