【问题标题】:can't receive clients ip address无法接收客户端 IP 地址
【发布时间】:2013-03-11 09:36:58
【问题描述】:

我在 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"); 

【问题讨论】:

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


【解决方案1】:

您在提供给acceptsockaddr 中获得客户地址。如果你以后想要一个连接的客户端套接字地址,你应该使用getpeername不是getsockname)。

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

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

你现在做的是试图获取服务器套接字的本地地址,但调用错误。

【讨论】:

  • 我在程序中使用 getpeername 但我认为这是获取服务器 IP 地址而不是客户端
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 2019-01-14
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多