【发布时间】:2011-03-23 07:22:58
【问题描述】:
我有一个客户端正在尝试使用套接字 s1 连接到我的主服务器。客户端需要继续尝试使用 s1 连接到主服务器,但同时连接并继续向我的辅助服务器发送“尝试”消息。创建 2 个套接字、重用端口并为这 2 个套接字创建 2 个绑定是个好主意,还是有更好的方法来实现这一点?这是客户端并使用 C 套接字。谢谢。
【问题讨论】:
我有一个客户端正在尝试使用套接字 s1 连接到我的主服务器。客户端需要继续尝试使用 s1 连接到主服务器,但同时连接并继续向我的辅助服务器发送“尝试”消息。创建 2 个套接字、重用端口并为这 2 个套接字创建 2 个绑定是个好主意,还是有更好的方法来实现这一点?这是客户端并使用 C 套接字。谢谢。
【问题讨论】:
如果您的程序是多台服务器的客户端,请为每台服务器使用一个套接字。客户端套接字根本不需要 bind,只需 connect。
【讨论】:
我认为您正在使用 TCP 套接字(不是吗?)。因此需要一个用于连接的套接字。 然后重用端口并不那么重要,因为您的应用程序是客户端应用程序,它是启动连接的部分。任何出站端口都应该没问题。
【讨论】:
因为每个面向流的套接字只能调用一次connect(2),所以必须至少使用两个套接字才能同时建立两个连接(或连接尝试)。
你不需要在客户端端口上bind(2) 任何东西,除非在奇怪的情况下。 (我正在考虑 Sun RPC portmapper 守护程序,但幸运的是,自从我关心 portmapper 守护程序以来已经将近十年了。在使用主机身份验证方法时,rlogin 需要 bind(2) 作为客户端,这太可怕了。)
【讨论】: