如何使用 select() 让服务器监听多个端口?

问题描述 投票:0回答:2

所以我正在尝试制作一个侦听多个端口的服务器。 我无法理解选择。

有人可以给我一些关于我做事的顺序的伪代码以及为什么吗?

我知道我将两个单独的套接字绑定到不同的端口。当然。但是我可以在两个端口上调用listen吗?

在我的客户端上,我是否只需调用 connect,然后 Listen 就会注意到连接尝试?我该如何选择接受?

抱歉新手问题。我已经尝试过 Beej 的指南和其他一些指南,但它们并没有很好地覆盖多个端口(它们似乎都使用相同的示例)。

c sockets file-descriptor posix-select
2个回答
0
投票

在服务器上调用

bind
listen
后,套接字的 fd 只是您可以与
select
调用一起使用的另一个 fd。当
select
返回并指示该 fd 上的数据时,您可以在 fd 上调用
accept
开始接收数据。

编辑:此外,当您

accept
连接时收到的 fd 是另一个可以传递给
select
调用的 fd。


0
投票

客户端: 您只需调用连接即可。

服务器端的步骤或多或少如下:

  1. 创建套接字
  2. 绑定套接字
  3. 开始聆听
  4. 将监听套接字的文件描述符添加到select中
  5. 当 select 返回监听套接字时,然后调用它的accept 函数。它将返回另一个文件描述符(记住将这个新文件描述符添加到select必须通过FD_SET返回的FD列表中)
© www.soinside.com 2019 - 2024. All rights reserved.