據我所知,流的大小是固定的,無論是內存還是文件流。是否有像串口或網絡套接字連接這樣的開放式流的術語?非大小限制流函數的術語是什麼?
我正在使用Delphi XE。我查看了TStream後面的類。我想創建一個適用於串口,網絡套接字,鍵盤輸入或模擬數據的通用類的接口。這些將是沒有指定長度的數據流,包含可用數據的數據包。
我不知道正確的搜索詞。也許正確的術語是一個套接字,但這似乎是一個更具體的網絡術語。
據我所知,流的大小是固定的,無論是內存還是文件流。是否有像串口或網絡套接字連接這樣的開放式流的術語?非大小限制流函數的術語是什麼?
我正在使用Delphi XE。我查看了TStream後面的類。我想創建一個適用於串口,網絡套接字,鍵盤輸入或模擬數據的通用類的接口。這些將是沒有指定長度的數據流,包含可用數據的數據包。
我不知道正確的搜索詞。也許正確的術語是一個套接字,但這似乎是一個更具體的網絡術語。
流,管道,插座,文件,無論...他們都是相似的,如下所示:
在POSIX/UNIX世界,比如「一切皆文件」,甚至網絡,設置,CPU,設備...
在Delphi中,你可以完全從TStream
繼承實現這種行爲。
即使是Seek
方法也不需要處理所有情況。您可以擁有單向/單向流,只讀流或只寫流。
然後,你可以共享相同的代碼與各種TStream
實現,文件,網絡,一些內存,鍵盤,屏幕,無論什麼......你甚至可以嵌套流,以便添加on-即時壓縮,加密,複製......
所以,如果你是在Delphi的世界,只是稱之爲「流」,實現了一個TStream
...快樂編碼!
這仍然是一個流。您可以將其稱爲順序訪問流,以區分它與隨機訪問流。在實施TStream
後代時,如果有人調用Seek
方法來尋找反向,前向或任何其他不允許的用法,則可以自由使Seek
方法發出異常。即可以讀取,但不能寫入
東西是源,並可以寫入,但不讀是沉東西。這些條款不包含固定大小。
聽通信的端口,插槽或其它類型的有時被稱爲嗅探或協議分析器。
爲了實現這個通用方法並不是微不足道的。
您將不得不爲每種類型的通信實現特定的抽象層。例如,在不知道協議格式的情況下監聽串行端口是註定要失敗的。
我希望做一個真正簡單的界面,使AnsiCharacters的緩衝區,可提供完全不考慮它包含的數據的通知事件。接收數據的對象將其存儲到另一個緩衝區中,並決定是否通知下一級是否有可接受的數據。 [數據消費者] <---- [原始數據解析器] <---- [串行數據源] –
TB的的緩衝區是一個較好的方法,因爲AnsiStrings應該在數據分組中被避免。 –
這些不會是這個級別的字符串。數據可能不完整。字節會更好的描述。我試圖傳達的數據不會是Unicode。 –
這就是所謂的**單向**。 –
@Downvoter,*單向*表明允許尋找,但僅限於一個方向(可能是前向)。如果底層數據源不支持查找,您可以通過執行'Seek'來模擬它,以便它調用'Read'並放棄它所讀取的內容。如果你不能跳過輸入,你不執行'Seek',使它看起來像你的話,我不認爲*單向*是一個好名詞。 –