据我所知,流是固定大小的,无论它们是内存还是文件流。是否存在开放式流的术语,如串行端口或网络套接字连接?
我在Delphi XE工作。我查看了TStream降级的类。我想创建一个适用于串行端口,网络套接字,键盘输入或模拟数据的通用类的接口。这些是没有指定长度的数据流,包含可用数据包。
我对正确的搜索词感到茫然。也许正确的术语是套接字,但这似乎是一个更具体的网络术语。
答案 0 :(得分:4)
流,管道,套接字,文件,等等......它们都是相似的,如下所示:
例如,在POSIX/UNIX世界中,“一切都是文件”,甚至是网络,设置,cpu,设备......
在Delphi中,您可以完美地继承TStream
来实现此行为。
即使Seek
方法也不需要处理所有情况。您可以拥有单向/单向流,只读或只写流。
然后你可以与不同的TStream
实现共享相同的代码,进出文件,网络,一些内存,键盘,屏幕,等等...你甚至可以嵌套流,以便添加即时压缩,加密,复制...
因此,如果您处于Delphi世界,只需将其命名为“stream”,实现TStream
...并且编码愉快!
答案 1 :(得分:2)
它仍然是一个流。您可以将其称为顺序访问流,以将其与随机访问流区分开来。在实施TStream
后代时,如果有人调用它来寻求向后,向前或任何其他不允许的使用,您可以自由地使用Seek
方法抛出异常。
可以从源中读取但未写入的内容,可以写入但不能读取的内容是 sink 。这些条款没有隐含的固定尺寸。
答案 2 :(得分:0)
收听端口,套接字或其他类型的通信有时称为嗅探器或协议分析器。
为此实现一般方法并非易事。
您必须为每种类型的通信实现特定的抽象层。 例如,在不知道协议格式的情况下收听串口注定要失败。