fri*_*nds 14 c sockets network-programming
我正在学习C套接字编程.你什么时候在客户端使用bind()?需要什么类型的程序以及为什么?我在哪里可以找到一个例子?
Gra*_*row 14
在客户端,如果要使用特定的客户端端口,则只能使用bind,这种情况很少见.通常在客户端上,您指定服务器计算机的IP地址和端口,操作系统将选择您将使用的端口.通常你不在乎,但在某些情况下,客户端上可能有防火墙只允许某些端口上的传出连接.在这种情况下,您需要在连接尝试起作用之前绑定到特定端口.
客户端程序使用的一个典型示例bind()是(过时的)网络客户端rlogin/系列。rsh这些客户端旨在在具有强信任关系的网络中使用 - 在某些情况下,服务器计算机信任客户端计算机来告诉它正在连接的用户的用户名。这要求客户端程序从低端口(小于1024的端口)连接,因为此类端口仅限于用户root,从而(理论上)证明正在使用的客户端是经过系统管理员授权的。
NFS 协议具有类似的信任关系,同样客户端使用bind().
另一个例子是 IRC 客户端,它允许用户指定要连接的特定源 IP 地址。这是为了容纳分配给其计算机的多个 IP 地址的用户,每个 IP 地址都分配有不同的“虚荣”域名。选择要连接的 IP(使用bind())允许用户选择在 IRC 上显示的域名。