c# - 面向对象的客户端-服务器设计

标签 c# client-server

我正在使用 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/

相关文章:

c# - C#中如何解决类名冲突问题

c# - 表达式树中的 ArrayAccess 与 ArrayIndex

c# - 当 Http 请求发生实际下载时

java - 不同操作系统中的不同结果

java - 通过套接字监听客户端时程序卡住

c# - 堆栈不平衡问题

c - 服务器、客户端调试

c++ - 通过套接字发送数据不起作用

android - 将音频文件从 Android 客户端上传到服务器时找不到文件错误

c# - 在每个非查询或整个连接之前打开连接?