gpt4 book ai didi

c - 如何在单个服务器中结合 TCP 和 UDP?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:59 25 4
gpt4 key购买 nike

我是套接字编程的新手,我想用 C 编写一个组合的 TCP/UDP 服务器套接字,但我不知道如何组合这两者。

所以目前,我知道 TCP 和 UDP 服务器/客户端是如何工作的,并且我已经为 TCP 和 UDP 客户端编写了代码。我也知道我必须以某种方式使用 select() 函数,但我不知道该怎么做。

我必须读取两个数字,它们通过 TCP 或 UDP 客户端发送到 TCP-/UDP-服务器,然后对这些数字进行一些计算,然后在服务器上打印结果。

有谁知道这方面的教程或示例代码,或者可以帮助我吗?

或者至少对 select() 函数有一个很好的解释。

最佳答案

基本上,使用事件循环。它是这样工作的:

  1. 我现在有什么需要做的吗?如果是,那就去做吧。

  2. 计算下一次我需要做某事的时间。

  3. 调用 select 指定读取集中我愿意读取的所有套接字和写入集中我尝试写入的所有套接字。

    <
  4. 如果我们发现任何准备好读取的套接字,则从中读取。

  5. 如果我们发现任何准备写入的套接字,请尝试写入它们。如果我们写了我们需要写的所有内容,请将它们从写集中删除。

  6. 转到第 1 步。

通常,要写入套接字,您遵循以下逻辑:

  1. 我已经在尝试写入这个套接字了吗?如果是这样,只需将其添加到队列中即可。

  2. 尝试将数据写入套接字。如果我们全部发送,我们就完成了。

  3. 将剩余的保存在队列中并将此套接字添加到我们的写集。

要记住三件事:

  1. 您必须将所有套接字设置为非阻塞。

  2. 确保在将文件描述符集传递给 select 之前复制它们,因为 select 会修改它们。

  3. 对于 TCP 连接,您可能需要自己的写入队列。

关于c - 如何在单个服务器中结合 TCP 和 UDP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com