据我所知,流的大小是固定的,无论是内存流还是文件流。有没有像串行端口或网络套接字连接这样的开放式流的术语?
我在德尔福XE工作。我看过从TStream降级的课程。我想制作一个通用类的接口,该接口将应用于串行端口、网络插座、键盘输入或模拟数据。这些将是没有指定长度的数据流,包含可用数据包。
我找不到合适的搜索词。也许正确的术语是套接字,但这似乎是一个更具体的网络术语。
流、管道、套接字、文件等等。。。它们都是相似的,如下所示:
- 它们被初始化(打开(,然后被销毁(关闭(
- 您对这个结构有一个句柄(实例(
- 您使用的读写方法可能检索到的内容少于请求的内容(它允许无大小/无限/抽象流(
例如,在POSIX/UNIX世界中,"一切都是文件",甚至是网络、设置、cpu、设备。。。
在Delphi中,您可以完美地从TStream
继承来实现此行为。
即使是Seek
方法也不需要处理所有的情况。您可以有单向/单向流、只读或只读流。
然后,您可以在不同的TStream
实现中共享相同的代码,往返于文件、网络、一些内存、键盘、屏幕等等。。。您甚至可以嵌套流,以便添加动态压缩、加密、复制。。。
所以,如果你在Delphi的世界里,只需称之为"流",实现一个TStream
。。。和快乐的编码!
它仍然是一个流。您可以将其称为顺序访问流,以将其与随机访问流区分开来。在实现TStream
子代时,如果有人调用Seek
方法来向后、向前或任何其他不允许的用法,则可以让它抛出异常。
可以读取但不能写入的东西是源,可以写入但不能读取的东西是汇。这些条款并不意味着固定的尺寸。
监听端口、套接字或其他类型的通信有时被称为嗅探器或协议分析器。
为此实现一个通用方法并非易事。
您必须为每种类型的通信实现一个特定的抽象层。例如,在不知道协议格式的情况下侦听串行端口注定会失败。