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))
。
我正在学习 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))
。