Являются ли два однонаправленных соединения одним двунаправленным?

Я только что обсуждал два типа «соединений». Допустим, у нас есть сервер и клиент. Что, если оба являются сервером и клиентом друг для друга, является ли это двунаправленным?

У меня сложилось впечатление, что два однонаправленных соединения несколько отличаются от одного двунаправленного, потому что они не используют один и тот же сеанс/один и тот же кабель/что-то одно и то же.

Что бы вы сказали, есть ли более общий способ описать, что есть/нет такой разницы?

P.S.: Поиск только что выдал обсуждения базы данных.

P.P.S.: почему-то однонаправленный тег недоступен, может ли его создать кто-то с достаточной репутацией?


person Kjellski    schedule 29.08.2011    source источник


Ответы (1)


Двунаправленное соединение во многих случаях логически отличается от двух однонаправленных соединений, поскольку подразумевает наличие причинно-следственной связи между двумя потоками данных. Хотя могут быть некоторые редкие случаи, когда было бы полезно иметь тип, который инкапсулирует независимый ввод и каналы в двунаправленное соединение, в общем случае два канала должны храниться и использоваться как единое целое, если только нет какого-либо сценария, в котором один из них мог бы иногда требуется использовать стороны ввода и вывода одного двунаправленного соединения, но иногда требуется использовать сторону ввода одного соединения и сторону вывода другого (например, программа может по умолчанию иметь stdin и stdout, подключенные к сторонам ввода и вывода). одного сокета, но может разрешить подключение одного или обоих в другом месте).

Проще говоря, я бы предположил, что если программа ожидает, что ее ввод не будет зависеть от ее вывода (как в случае с чем-то вроде «sort» или «grep»), ввод и вывод должны быть независимыми объектами; если программа ожидает, что ввод будет зависеть от ее вывода (например, она отправит запрос и ожидает прочитать ответ), ввод и вывод должны обрабатываться объектом двунаправленного соединения.

person supercat    schedule 29.08.2011