gpt4 book ai didi

C 语言客户端/服务器程序

转载 作者:行者123 更新时间:2023-11-30 19:44:45 25 4
gpt4 key购买 nike

我是 C 套接字编程新手。我知道如何将 TCP 和 UDP 编写为不同的程序。但只有一台服务器应该处理这两个客户端。

谁能告诉我如何编写一个同时处理 TCP 和 UDP 客户端的服务器?

最佳答案

您无法使用 1 个服务器套接字监听 TCP 和 UDP 客户端。不过,您可以创建 2 个服务器套接字(一个 TCP 服务器和一个 UDP 服务器)。请注意,为两者提供一台服务器甚至没有意义:UDP 是无连接的,因此当您尝试在服务器套接字上执行 accept 时,就会出现第一个问题(因为它是一个假设的混合版本,什么是)应该接受吗?)。

无论如何,我假设您希望在同一个事件循环中使用两个服务器(如果您不知道它是什么,那么将其视为您的主要功能就足够了)。由于 C 套接字默认情况下是阻塞的,因此您无法立即运行两个服务器。

您可以使用选择(Google)。如果你不知道它是什么,我建议先用 Python 尝试一下。在 Python 中,它相当简单,它会让您对这个概念有一些了解。基本上你要做的是:创建多个服务器套接字,而不是在这些套接字之间“切换”,查看哪些套接字已读取事件(无论是新连接还是消息),然后处理这些事件。

我可以推荐libuv 。它是一个最初为 Node.js 构建的 C 库。在 libuv 之前,他们使用依赖于平台的事件循环实现 (libev)。 Libuv 最初是为了创建一个用于非阻塞 IO(TCP、UDP、fs 等)的多平台库。然而,即使您不想编写多平台代码,它也提供了一个很棒的 AP​​I 来创建服务器套接字并在同一事件循环中监听多个套接字。

关于C 语言客户端/服务器程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406429/

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