我正在使用 C# 来设计客户端-服务器应用程序。我还是个初学者,正在学习 C# 和 OO 的诀窍。现在,我在一张纸上写下了一些想法。本质上,我将创建一个“客户端”类,其中包含所有详细信息(套接字等)。客户端类将被创建并存储在一个数组中,该数组将由服务器循环使用。如果连接 100 个客户端,所使用的内存会很大吗?
我猜服务器会循环遍历数组中的每个客户端,检查“dataSend”标志,然后标记服务器为客户端创建一个 NetworkStream 对象。
我应该在客户端连接时创建一个网络流对象并在连接时关闭吗?
如果有人能指出我编写自己的客户端服务器软件的方向,我将不胜感激。
最佳答案
Cam,您所描述的并不是真正的客户端/服务器设计,因为两端在您的场景中紧密耦合,共享一组对象。请从请求和响应的角度来考虑。客户端通过网络向服务器发出请求,服务器通过网络将响应返回给客户端。它们共享两件事:公共(public)网络连接和服务器公开的接口(interface)知识。
网络是这种模式的一个很好的、熟悉的例子。客户端,即您的浏览器,组成了一个 HTTP Request并通过网络连接将其发送到服务器。服务器解释请求并将 HTTP 响应发送回客户端。每个人都知道如何解释 HTTP 标准。这就是它们之间的联系,没有别的。
我建议从实现一个非常简单的请求/响应开始。例如,客户端发送“TIME”请求,服务器返回当前时间,而“DATE”请求则返回当前日期。通过实现一个简单的协议(protocol),您可以集中精力学习 .NET 网络类的机制。
关于c# - 面向对象的客户端-服务器设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072040/