gpt4 book ai didi

c - 第一个 tcp echo 客户端无法与第二个 tcp echo 客户端通信(文件描述符错误)

转载 作者:行者123 更新时间:2023-11-30 15:50:18 24 4
gpt4 key购买 nike

我的应用程序是多用户 Echo 聊天程序。如果客户端发送消息,服务器会将消息发送到所有客户端,包括发出消息的客户端。它是在c中实现的。

服务器为每个新的客户端连接创建一个进程。所有子进程都可以访问存储在共享内存中的所有客户端的套接字描述符

当有一个客户端时,消息会正确回显。当第二个客户端加入时并将其正确回显的消息发送给两个客户端。

当第一个客户端发送消息时,它会正确传输回第一个客户端。但是当尝试将该消息发送到第二个客户端时,它失败并出现错误错误的文件描述符

同样,每个客户端都可以向之前连接的客户端和自身传输消息,但不能向之后连接的客户端传输消息

如何解决这个问题?

最佳答案

访问套接字描述符并不意味着您可以访问该套接字。您需要共享套接字本身,而不是它们的描述符。

此外,两个进程尝试同时在同一 TCP 连接上发送的结果是未定义的。例如,数据可能是交错的。

所以你的设计基本上已经被破坏了。

您实际上可以共享套接字。如何做到这一点取决于平台。您还需要使用某种形式的 IPC 来仲裁哪个进程可以写入套接字。例如,您可以为每个套接字使用一个信号量。

关于c - 第一个 tcp echo 客户端无法与第二个 tcp echo 客户端通信(文件描述符错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843952/

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