客户端到客户端套接字通信
client to client socket communication
我有一个客户端/服务器程序,它允许通过服务器派生的线程为多个客户端提供服务。目前,该程序只与服务器通信,但我现在想重新设计该程序,以便客户端可以与另一个客户端建立通信。在设计方面,我没有太多的经验,不知道正确的方向是什么。最初我考虑通过服务器线程进行通信,但我不知道如何通知该线程的客户端另一个客户端想要建立通信。
例如,我想从cli A到cli N:进行通信
Cli A <---> SerThread A <------> Main Thread <------> SerThread N <---> Cli N
我不确定如何通知Cli N Cli A需要与之沟通。
在客户端从套接字中读取之前,它不会知道另一个客户端想要与它通信。因此,如果Cli N处于等待用户输入直到发送/接收的状态,它就不会知道。我需要一种方法来立即通知客户通信正在等待它。
我想得越多,就越困惑,所以在我正确设计这个之前,我可能需要一些指导。
好吧,你可以让它像开关一样工作:)我想你想通过服务器在两个客户端之间建立连接,对吗?如果是这样,您需要做的是给每个客户端一个序列号。然后从客户端向服务器发送一个"请求",其中包含您正在搜索的客户端的信息。意思是带有序列号的数据包。然后,服务器可以将信息brodcast到已连接客户端的列表中。在客户端,由于服务器,客户端将收到序列号。如果客户端接收到的序列号与其自己的序列号匹配,则客户端将向服务器返回true。否则,它将发出虚假信息。然后,下次搜索该客户端时,服务器将已经知道它在哪里,并将仅向该特定客户端发送消息。如果客户端明显断开连接,序列号将被删除,服务器将丢失有关该客户端的数据。
我强烈建议您阅读Beej的网络指南,这是面向begineers的套接字编程圣经。你有很多例子,并一步一步地解释每一个函数,所以如果你花一些时间,你将能够理解一切。该指南还包括一个客户端-服务器连接的工作示例,您可以实际查找您遇到的问题。我通过阅读这本指南学到了这类东西!我希望它有帮助
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 提升::Asio 异步聊天客户端停止与服务器通信
- UDP客户端/服务器程序在不同的IP和端口上通信超过2个插座
- 如何让客户端通过modbus-tcp协议与多个服务器通信?
- 如何将数据序列化为C++ zmq 客户端和 Python zmq 服务器之间的通信
- 使用UNIX套接字C++客户端与Node.js服务器通信的简单示例
- 嗅探 QWebsocket 服务器 - 客户端通信
- 证书验证在客户端服务器通信中使用boost :: asio和openssl失败
- 客户端JavaScript和C 套接字服务器之间的通信
- 如何在服务器和客户端之间进行异步通信
- C++:一个客户端与多个服务器通信
- C++:服务器和客户端之间的经典通信练习
- C++ 客户端无法与 Java 服务器通信
- 使用 C/C++、SSL 协议的客户端和服务器通信不起作用
- 如果传递长类型,32位客户端如何与64位服务器通信
- c++tcp多线程客户端/服务器-如何与线程套接字处理程序进行通信
- C/C++服务器,通过stdin/stdout与客户端通信(阻塞stdin,直到读取了大量字节)
- 套接字编程中的客户端到客户端通信与许多客户端
- 使用C++和Boost::Asio的N方客户端到客户端通信
- C ++ Winsock - 服务器只与单个客户端通信,而它应该与每个客户端通信