使用单个客户端套接字连接多个服务器

3
我有一个单一的客户端,正在尝试使用套接字s1连接到我的主服务器。客户端需要不断尝试使用s1连接到主服务器,并同时连接并持续发送“尝试”消息到我的次要服务器。创建两个套接字并重用端口以及为这两个套接字创建两个绑定,是否是个好主意?还是有更好的方法来实现这一目标?这是一个客户端,并且使用C sockets。谢谢。
3个回答

5

如果您的程序是多个服务器的客户端,请为每个服务器使用一个套接字。对于客户端套接字,您根本不需要使用bind,只需使用connect


谢谢。之前不确定绑定(bind)的用法。现在每个服务器使用一个套接字(socket)。 - user629034
@Fred Foo,所以客户端可以在同一端口上连接具有不同IP的多个服务器吗? - y_159

1

我认为你正在使用TCP套接字(是吗?)。因此,只需要一个连接套接字。然后,重用端口并不是很重要,因为你的应用程序是客户端应用程序,这是启动连接的部分。任何出站端口都应该可以。


1

因为每个面向流的套接字只能调用一次connect(2),所以您必须使用至少两个套接字来进行两个同时连接(或连接尝试)。

除了在某些奇怪的情况下,您不需要在客户端端口上绑定任何内容。(我想到了Sun RPC端口映射程序守护程序,但幸运的是,我已经十年没有关心过端口映射程序守护程序了。此外,当使用主机身份验证方法时,rlogin需要作为客户端进行bind(2),这是可怕的。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接