Можно ли передавать данные любого устройства по протоколу TCP?

Можно ли передавать данные любого устройства по протоколу TCP?

Можно ли перенести целое устройство, как в записи /dev, через TCP? Я говорю о переносе, например, джойстика по TCP или мыши/порта rs232/кадрового буфера устройства, устройства звуковой карты, дисков и т. д.

Меня в основном интересуют устройства ввода — клавиатуры, джойстики, планшеты, мыши и т. д. — в более общем плане, чем специализированное программное обеспечение для удаленных мышей/клавиатур.

решение1

Если это USB-устройства, то то, что вы ищете, стало возможным уже несколько лет назад сUSB/IP. С тех пор это быловведено в Linux 3.17. Посмотрите usbipпакет на системах, подобных Debian. У вас даже могут быть клиенты Windows (т. е. доступ к USB-устройствам, подключенным к серверу Linux).

Что касается блочных устройств, Linux предлагаетСетевое блочное устройствоподдержка еще дольше.

решение2

Да, это можно сделать, по крайней мере, для простых устройств, таких как мышь, но вам придется написать некоторый код. По сути, у вас будет процесс на машине с физическим устройством, которое взаимодействует с устройством. Затем этот процесс переносит протокол по TCP на другой хост. Принимающий процесс должен будет эмулировать любой интерфейс, который ожидает увидеть конечный процесс (сервер X11 или композитор Wayland). В простейшем случае получатель может настроить именованный канал, в который записываются данные, и который заменяет обычно используемый файл устройства.

Связанный контент