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

Когда какой-либо пользователь резервирует таблицу как зарезервированную, программа должна транслировать номер таблицы всем остальным ПК и помечать таблицу как зарезервированную. Поскольку все компьютеры используют одну и ту же программу, как можно создать связь между всеми ними?

Должен ли я использовать сокеты для достижения этой цели? Если это имеет значение, на всех компьютерах установлена ОС Linux, и приложение будет разрабатываться на ruby, perl или php.

Спасибо.

2 ответа2

0

Поскольку вы используете Linux, есть стандартное решение этой проблемы: именованный канал. Именованный канал - это файл, в который пишет один процесс, и из которого другой процесс читает, как только данные становятся доступными. Операционная система позаботится о том, чтобы пробудить процесс чтения и сообщить ему "для вас есть новости". Он также заботится о том, чтобы доставить процессу истечения точный объем данных, которые стали доступны, не больше, не меньше. Другими словами, это может быть 1 резервирование или 57 резервирований, все они будут доставлены правильно, без необходимости их учета.

Вы делаете именованный канал с помощью команды:

mkfifo my_pipe

Теперь вы используете файл my_pipe, как и любой другой файл, вы можете писать в него, читать из него, перенаправлять в него, добавлять к нему:

echo "This is my name" > my_pipe

grep name my_pipe

cat my_pipe | while read; do ...; done 

и так далее.

0

Краткий ответ: TCP/IP позволяет вам легко устанавливать отношения между сервером и клиентом. Сервером может быть, например, 192.168.0.1, и все клиенты подключаются к этому серверу.

Детали: Если у вас есть база данных mysql или аналогичная, вы можете подключить все компьютеры к единой базе данных для сохранения данных бронирования. Если вы делаете это на основе веб-интерфейса, вы можете создать веб-страницу для запуска с сервера Apache с помощью php. Затем вы можете запустить веб-браузер на всех клиентских ПК и каждый клиент обновляет страницу раз в минуту. Учитывая это решение, используйте веб-сервер apache, графический интерфейс пользователя может выглядеть так, как вы хотите. Все клиентские ПК просто запускают веб-браузер и указывают на таблицы http:///(или что-то еще)

Другой вариант создать учетную запись Google, а затем создать календарь для каждой таблицы. У Google есть бесплатный и общедоступный php api (и несколько других языков), который вы можете использовать для добавления событий в календарь Google и управления ими. Если вам нужно сделать доступным только для чтения, вы можете создать вторую учетную запись Google и сделать общий доступ только для чтения ко второй учетной записи. Вы можете отобразить учетную запись только для чтения или чтения / записи в веб-браузере для каждой таблицы. Вы можете включить все календари или просто отобразить календарь для этой таблицы. (Я делаю что-то похожее с календарем Google для планирования комнаты)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .