2013-03-11 52 views
0

我在C++控制台应用程序中有一个客户端服务器程序。我先运行服务器然后运行客户端。服务器应该显示从请在连接客户端的IP地址,但它说0.0.0.0无法接收客户端的IP地址

我猜它这条线是造成问题

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"); 
+0

['getsockname'](http://msdn.microsoft.com/en-gb/library/windows/desktop/ms738543(v = vs.85).aspx)return? – 2013-03-11 09:40:50

+0

为获得最佳效果:在与服务器不同的计算机上测试客户端。 – Johnsyweb 2013-03-11 10:06:56

+0

我试图在另一台计算机上运行它,但我遇到了问题。看到这里http://stackoverflow.com/questions/15297270/problems-with-running-exe-file-built-with-visual-studio-on-another-computer – Karen123456 2013-03-11 15:09:00

回答

1

你得到的客户提供acceptsockaddr解决。如果您以后想要连接的客户端套接字地址,则应使用getpeername而不是getsockname)。

你也应该通过一个有效的和初始化变量长度getpeername(或getsockname):

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

你现在正在做的是试图获得服务器套接字的本地地址,但称它为错。

+0

我在程序中使用getpeername,但我认为这是获取服务器的IP地址不是客户端 – Karen123456 2013-03-11 15:10:06