如何解决C++ socket编程绑定函数
我正在学习 C++ 中的套接字编程,但我不明白为什么这个函数将套接字绑定到“本地主机”。例如,在 python 中,您必须像这样指定主机:
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('localhost',1234))
如果我没记错的话,这个 c++ 函数正在以同样的方式绑定套接字。但是,为什么是本地主机?
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 等效项是 {{1}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。