Как называется функция потока с ограниченным размером? - PullRequest
2 голосов
/ 21 сентября 2011

Насколько я понимаю, потоки имеют фиксированный размер, будь то потоки памяти или файловые потоки.Есть ли термин для открытого потока, такого как последовательный порт или подключение к сетевому сокету?

Я работаю в Delphi XE.Я посмотрел на классы, которые произошли от TStream.Я хотел бы создать интерфейс для общего класса, который будет применяться к последовательному порту, сетевому сокету, вводу с клавиатуры или моделируемым данным.Это будет поток данных без заданной длины, содержащий пакеты используемых данных.

Я в недоумении для правильного поискового запроса.Может быть, правильный термин - это сокет, но, похоже, это более конкретный сетевой термин.

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Поток, конвейер, сокет, файл, что угодно ... все они похожи, в следующем:

  • Они инициализируются (открываются), затем уничтожаются (закрываются);
  • У вас есть дескриптор (экземпляр) над этой структурой;
  • Вы используете методы чтения и записи, которые могут извлекать меньше содержимого, чем запрошено (допускается поток без размеров / бесконечный / абстрактный).

В мире POSIX / UNIX , например, «все это файл», даже сеть, настройка, процессор, устройство ...

В Delphi вы можетеидеально наследует от TStream для реализации этого поведения.

Даже метод Seek не должен обрабатывать все случаи.Вы можете иметь однонаправленные / однонаправленные потоки, только для чтения или только для записи.

Затем вы можете поделиться одним и тем же кодом с различными реализациями TStream, в / из файла, сети, некоторой памяти, клавиатура, экран, что угодно ... Вы можете даже вкладывать потоки, чтобы добавить сжатие, шифрование, репликацию на лету ...

Так что, если вы находитесь в мире Delphi, простоНазовите это «поток», реализует TStream ... и счастливое кодирование!

2 голосов
/ 21 сентября 2011

Это все еще поток.Вы можете назвать это потоком с последовательным доступом , чтобы отличить его от потока с произвольным доступом .При реализации вашего потомка TStream вы можете использовать метод Seek, который вызывает исключение, если кто-то вызывает его для поиска назад, вперед или любого другого запрещенного использования.

То, что можно прочитать изно не записано - это источник , а то, что может быть записано, но не прочитано, - сток .С этими терминами не подразумеваются фиксированные размеры.

0 голосов
/ 21 сентября 2011

Прослушивание порта, сокета или других типов связи иногда называют анализатором или анализатором протокола .

Реализовать общий метод для этого нетривиально.

Вам потребуется реализовать определенный уровень абстракции для каждого типа связи. Например, прослушивание последовательного порта без знания формата протокола обречено на неудачу.

...