我试图在概念上通过我用 c#(客户端和服务器)编写的客户端-服务器套接字应用程序的模型来工作。我的服务器需要同时处理多个客户端,最好是同时处理来自客户端的多个请求。我已经为我的通信制定了一个容器,我将在每条消息的开头发送一个固定长度的标头,其中包含(除其他外)消息的长度。我有一些使用 c# 进行套接字编程的经验,所以我很喜欢使用异步套接字。
从概念上讲,我遇到的主要问题是我需要客户端和服务器都能够随时接收消息。客户端将建立连接,并保持“登录”状态(就像 IM 客户端一样),它需要在任意时间接收数据并在任意时间发出请求。作为协议的一部分,我还希望接收对每个请求的响应(无论是从服务器到客户端,还是从客户端到服务器)。
如果可能的话,我希望能够使用单个套接字。我相信我可以使用两个套接字来完成这项工作,一个用于发出服务器->客户端请求,一个用于客户端->服务器请求,但我不希望处理两个端口/连接的额外复杂性。但是,使用单个套接字,我不确定如何管理发送请求并在可以交错时获取响应。
我在搜索中找不到任何类似服务器或客户端的示例。感谢任何提供任何想法的人。