C++socket网络编程服务器端获取自己IP地址显示0.0.0.0

C++socket网络编程服务器端获取自己IP地址显示0.0.0.0 而且服务器端和客户端同在自己主机上运行就可以获取客户端地址,分主机运行就什么都不显示

服务器端:

SOCKET hServSock = socket(PF_INET,SOCK_STREAM,0);
//绑定IP和端口号
SOCKADDR_IN servAddr;
memset(&servAddr, 0, sizeof(servAddr)); 
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);//服务器主机IP
servAddr.sin_port = htons(9110);//端口号
bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr));//绑定套接字与地址
struct sockaddr_in sa;
int len = sizeof(sa);
if (!getsockname(hServSock, (struct sockaddr*)&sa, &len))
{
    printf("Client Ip:%s   ", inet_ntoa(sa.sin_addr));
    printf("Client Port:%d \n\n", ntohs(sa.sin_port));
}

printf("我的IP地址为:%s/n", inet_ntoa(servAddr.sin_addr));
//监听请求
while (1)
{
    listen(hServSock, 5);//监听套接字,同时最多五个
    //(发现有客户端请求连接)接电话
    //对方IP/端口号
    std::cout << "监听连接成功" << std::endl;
    SOCKADDR_IN clntAddr;
    int clntAdrSz = sizeof(clntAddr);
    SOCKET hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &clntAdrSz);
    //打印对方IP
    printf("对方IP地址为:%s\n", inet_ntoa(clntAddr.sin_addr));
}

客户端:
//
int main()
{
//初始化winscoket
std::cout << "22岁桀骜小妈" <<std::endl;
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
//创建套接字
SOCKET hClntSOCK= socket(PF_INET, SOCK_STREAM, 0);

SOCKADDR_IN clntAddr;
memset(&clntAddr, 0, sizeof(clntAddr));
clntAddr.sin_family = AF_INET;
clntAddr.sin_addr.s_addr = inet_addr("172.27.237.237");
clntAddr.sin_port = htons(9110);
connect(hClntSOCK, (SOCKADDR*)&clntAddr, sizeof(clntAddr));
std::cout << "请求连接" << std::endl;


while (1);
//结束Winsock Sockets API
WSACleanup();
return 0;

}

运行结果及报错内容

img

本来以为是因为自己ip为0.0.0.0才导致他人无法连接,但在自己主机上却可以运行,实在毫无头绪
求各路大神解惑!ip与连接问题!

回环地址,用于本地访问