C++套接字编程绑定函数

C++ socket programming bind function

我正在学习 C++ 套接字编程,我不明白为什么这个函数将套接字绑定到 'localhost'。例如,在 python 中,您必须像这样指定主机:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 1234))

如果我没记错的话,这个c++函数就是以同样的方式绑定套接字。但是,为什么是localhost?

int _bind(int port)
    {

        bzero((char *)&serv_addr, sizeof(serv_addr));

        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = INADDR_ANY;
        serv_addr.sin_port = htons(port);

        if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
        {
            error("can't bind socket");
            return -1;
        }
        return 1;
    }

绑定到“localhost”或INADDR_LOOPBACK仅绑定到环回接口。它将允许使用例如本地连接127.0.0.1,但不是来自网络。

绑定到 INADDR_ANY 绑定到所有接口。它将允许使用其网络 IP(例如 192.168.1.2)通过网络从另一台机器连接到这台机器。

绑定到 INADDR_ANY 的 Python 等效于 sock.bind(('0.0.0.0', 1234))