Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix socket编程中bind调用的混淆_Unix_Sockets_Bind - Fatal编程技术网

Unix socket编程中bind调用的混淆

Unix socket编程中bind调用的混淆,unix,sockets,bind,Unix,Sockets,Bind,我正在学习使用c/c++在unix中进行socket编程。 我对一个函数调用bind(params..)感到困惑。 实际上,它采用地址结构“sockaddr_in”,我们可以按照以下方式创建该结构 sockaddr_in.*** = somthing.. sockaddr_in..s_addr htonl(INADDR_ANY) **Passing INADDR_ANY will alow to bind all local addresses** 我的问题是,为什么我们需要使用“INA

我正在学习使用c/c++在unix中进行socket编程。 我对一个函数调用bind(params..)感到困惑。 实际上,它采用地址结构“sockaddr_in”,我们可以按照以下方式创建该结构

sockaddr_in.*** = somthing..
sockaddr_in..s_addr   htonl(INADDR_ANY)

**Passing INADDR_ANY will alow to bind all local addresses**
我的问题是,为什么我们需要使用“INADDR_ANY”? 据我所知,每台机器只能有一个唯一的IP地址。通过这种方式,只有一个地址与machien关联。绑定调用应该直接将套接字绑定到单个可用地址


请解释不同的情况以及原因?

一台机器可能有多个IP地址,因为它有多个网卡或通过软件
INADDR\u ANY
允许您将套接字绑定到机器的所有IP地址。

不正确。大多数机器都是多主机的,这意味着它们有多个IP地址


例如,网络地址和127.0.0.1。

一台机器通常有一个IP地址用于每个连接的网络接口,另加127.0.0.1用于本地主机(环回)。例如,笔记本电脑可以连接到无线网络10.0.1.25,也可以连接到有线网络10.0.2.4。服务器通常具有与内部网络和公共网络的接口