2010-06-10 47 views
2

我在使用c/C++学习unix中的套接字编程。 我很困惑与一个函数调用绑定(params ..)。 其实它采用adreess结构“的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地址。这样只有一个地址与机器相关联。 Thye绑定调用应直接将套接字绑定到单个可用地址。

请解释什么是不同的情况,为什么这样?

回答

0

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

0

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

例如,网络地址和127.0.0.1。

1

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