好的,我知道这很宽泛,但让我把它缩小一点。我已经做了一点客户端-服务器编程,但没有什么需要处理的只是一次处理几个客户端。所以我想知道设计方面这些服务器最主流的方法是什么。如果人们可以参考教程、书籍或电子书。哈哈好的。并没有真正缩小范围。我想我正在寻找的是一个简单但文字的示例,说明如何设置服务器端程序。我看到它的方式:客户端发送命令:服务器接收命令并放入队列,服务器有一个单独的专用线程或一个线程池,不断轮询这个队列,然后将适当的响应发送回客户端。非阻塞 I/O 经常使用吗?我想只有教程、时间和练习才是我真正需要的。
*编辑:感谢您的回复!我想这是我正在尝试做的更多事情。这主要是为了学习,所以我宁愿尽可能避免使用框架或库。以这个有点虚构的想法为例:有一个客户端程序,它执行某些功能并不断将输出流式传输到服务器(可能有很多这样的客户端),然后服务器创建统计数据并存储大部分数据。假设有一个可以登录服务器的管理客户端,如果有任何客户端将数据流式传输到服务器,它反过来会将数据流式传输到每个连接的管理客户端。这就是我对服务器程序逻辑的设想:服务器将有 3 个线程用于管理传入连接(每个端口监听一个),然后生成一个线程来管理每个连接:
当数据从客户端传入服务器时,服务器会解析相关内容并将该数据放入队列中,比如说 adminDataQueue。反过来,有一个线程监视这个队列,每 200 毫秒(或其他)会检查队列以查看是否有数据,如果有,则循环通过 AdminDataConnections 并将其发送给每个。
现在对于 AdminConnection,这将用于任何命令或数据的直接请求。所以你可以请求统计,服务器端会收到统计命令,然后发送一个命令说传入统计,然后立即发送一个统计对象或数据。
至于 AdminDataConnection,它只是来自客户端的输出,可能有一些简单的命令交织在一起。
除了所有客户端数据集中到每个管理客户端的逻辑问题的带宽问题。由于扩展问题(再次忽略客户端和服务器之间的带宽;以及管理客户端和服务器之间的带宽),这种设计会出现什么样的问题。