gpt4 book ai didi

c - 尝试获取具有相同地址和不同端口的套​​接字来来回传递数据

转载 作者:行者123 更新时间:2023-11-30 17:30:03 27 4
gpt4 key购买 nike

首先,请原谅我可能会滥用技术术语。我几乎没有受过正规教育,就被扔进了套接字 IO 领域,而且我知道我左右说错了话。

我正在尝试用 C 语言构建一个客户端和服务器,使多个客户端能够相互连接。一般程序是这样的:

1) 服务器有一个端口不断监听和接受连接
2) 客户端连接到该端口
3) 服务器创建一个新的套接字(相同地址,不同端口号),告诉客户端连接到该套接字,并关闭与客户端的连接。
4) 客户端连接到指定的套接字,并向服务器提供它想要进入的 channel
5) 服务器将该套接字放置在指定的 channel 上
6) 对连接到服务器的每个客户端重复步骤 2 到 5
/* 以上所有内容均已编码 */
7) 一旦一个 channel 有 2 个或更多成员,我希望每个成员端口都能够广播到同一 channel 中的所有其他端口(因此客户端可以相互通信)

在这种情况下,同一 channel 上的所有涉及的套接字都具有相同的地址和不同的端口号。我所阅读和研究的有关广播和多播的所有内容都围绕着具有相同端口号和不同地址的每个通信器。

有没有办法用 C 语言进行我希望进行的通信?

最佳答案

我认为您想使用 TCP 的listen() 和accept() 函数。您可以执行您所描述的操作并让客户端相互通信,但所有流量都将通过作为中心的服务器运行。

如果您希望所有客户端都能够与其他客户端交谈,您有以下几种选择:

  1. 服务器是所有数据的枢纽,并为您在客户端之间传递数据

  2. 客户端与其他客户端保持直接连接并相互传递数据以促进集线器的使用。这意味着大量的数据复制。

  3. 广播或多播 (UDP)。这只能通过本地网络实现,因为互联网路由器会阻止多播和广播流量。

我可能会选择#1。

关于c - 尝试获取具有相同地址和不同端口的套​​接字来来回传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25331913/

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