我有一个客户端尝试使用套接字s1连接到我的主服务器。客户端需要继续尝试使用s1连接到主服务器,但同时连接并继续向我的辅助服务器发送“尝试”消息。创建2个套接字,重用端口并为这2个套接字创建2个绑定是不是一个好主意,还是有更好的方法来实现这个目标?这是客户端并使用C套接字。感谢。
答案 0 :(得分:5)
如果您的程序是多个服务器的客户端,请为每个服务器使用一个套接字。您根本不需要bind
作为客户端套接字,只需connect
。
答案 1 :(得分:1)
我认为你正在使用TCP套接字(不是吗?)。因此需要一个用于连接的插座。 然后重用端口并不是那么重要,因为您的应用程序是客户端应用程序,它是启动连接的一部分。任何出站端口都应该没问题。
答案 2 :(得分:1)
因为每个面向流的套接字只能调用connect(2)
一次,所以你必须至少使用两个套接字来进行两个同时连接(或连接尝试)。
除了奇怪的情况,您不需要bind(2)
客户端端口上的任何内容。 (我正在考虑Sun RPC portmapper守护程序,但幸运的是,自从我关心了portmapper守护程序以来已经过去了近十年。在使用主机时,rlogin
需要bind(2)
作为客户端 - 认证方法,这太可怕了。)