无法接收客户端的IP地址

时间:2013-03-11 09:36:59

标签: c++ client-server ip-address

我在C ++控制台应用程序中有一个客户端服务器程序。我首先运行服务器然后运行客户端。服务器应显示已连接的客户端的IP地址,但显示为0.0.0.0

我猜它的这一行造成了问题

getsockname(ListeningSocket, (SOCKADDR *)&ServerAddr, (int *)sizeof(ServerAddr));
printf("Server: Receiving IP(s) from client: %s\n", inet_ntoa(ServerAddr.sin_addr)); 

在客户端我将ip地址设置为127.0.0.1

 ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); 

1 个答案:

答案 0 :(得分:1)

您获得sockaddr提供给accept的客户地址。如果您以后想要连接的客户端套接字地址,则应使用getpeername not getsockname)。

您还应该将有效且已初始化的变量作为getpeername(或getsockname)的长度传递:

int size = sizeof(SOCKADDR_IN);
getpeername(connectedsocket, (SOCKADDR*) &address, &size);

您现在正在尝试获取服务器套接字的本地地址,但是错误地调用它。