我正在学习C套接字编程。什么时候在客户端使用bind()?哪些类型的程序将需要它?为什么?我在哪里可以找到一个例子?
发布于 2010-11-07 15:15:56
在客户端,只有当您想要使用特定的客户端端口时才会使用bind,这种情况很少见。通常在客户端,您指定服务器机器的IP地址和端口,操作系统将选择您要使用的端口。通常您并不关心,但在某些情况下,客户端上可能有一个防火墙,它只允许在某些端口上进行传出连接。在这种情况下,您需要绑定到特定的端口,然后连接尝试才会生效。
发布于 2010-11-07 15:13:16
活动FTP连接的数据连接就是一个例子。在这种情况下,服务器从其端口20连接到由port或EPRT命令指定的IP和端口。
发布于 2010-11-08 05:32:36
使用bind()
的客户机程序的一个典型示例是(过时的) rlogin
/ rsh
网络客户机系列。这些客户端旨在用于具有强大信任关系的网络中-在某些情况下,服务器计算机信任客户端计算机,以告诉它正在连接的用户的用户名。这要求客户机程序从低端端口(小于1024的端口)进行连接,因为这样的端口仅限于root
用户,因此(理论上)证明所使用的客户机是由系统管理员授权的。
NFS协议具有类似的信任关系,类似地,客户端使用bind()
从较低的端口号建立连接。
另一个示例是IRC客户端,它允许用户指定要连接的特定源IP地址。这是为了容纳分配给他们的机器的许多IP地址的用户,每个IP地址都分配了一个不同的“虚”域名。选择从哪个IP连接(使用bind()
)允许用户选择哪个域名显示在IRC上。
https://stackoverflow.com/questions/4118241
复制