Alleksh Опубликовано 5 января, 2019 Поделиться Опубликовано 5 января, 2019 (изменено) Что может дать такая сеть из нескольких компов? 1) Ускорение заводов. Ведь если несколько ПК будут одновременно работать с сортронами - завод будет работать быстрее, верно? 2) Создание баз данных. К примеру - имеем мы сеть из 30 компов, а нам нужно обновить базу данных предметов. Неужели в каждый ПК добавлять данные? В этом случае весьма полезны базы данных. Покажу использование сетей на примере чата. И так, давайте создадим чат. Примечание: Данный чат можно реализовать и через один пк, используя несколько мониторов. Идея: Есть два вида устройств - сервер и клиент. Сервер всего один, клиентов - множество. Для начала напишем сервер. Идея сервера: Получаем ID устройства, куда отправить данные, номер команды и получаемые данные. Отправляем по указанному ID ответ. Храним сообщения на диске. Команды: 0 - отправить кол-во сообщений(записать в 0x301-0x302). 1 - отправить сообщение по номеру(берём из 0x403-0x404 номер, записываем в 0x301-0x3FF ответ). 2 - Получить сообщение - в 0x403-0x4FF находится сообщение. Разметка сервера: 0x400 - ID 0x401 - номер команды 0x402 - Можно ли начинать работу? 0x403-0x4FF - получаемые данные. 0x300 - завершена ли работа? 0x301-0x3FF - данные клиента. Реализация сервера: Переменные:VARIABLE NOW_SIZE Для начала - напишем базу данных, для хранения сообщений:HEX : ADD_NEW_MESSAGE NOW_SIZE @ 1+ DUP NOW_SIZE ! BLOCK 70 MOVE FLUSH ; : GET_MESSAGE BLOCK ; Давайте добавим пару тестовых сообщений: Как можно увидеть, сообщения записались отлично: Давайте теперь доработаем наш сервер:HEX : CONNECT_TO_ID 400 C@ RBP! ; : PROCESS_COMMAND_0 CONNECT_TO_ID NOW_SIZE @ 301 ! ; : PROCESS_COMMAND_1 403 C@ GET_MESSAGE CONNECT_TO_ID 301 70 MOVE ; : PROCESS_COMMAND_2 404 ADD_NEW_MESSAGE CONNECT_TO_ID ; : SWITCH_COMMAND 401 C@ DUP 0= IF DROP PROCESS_COMMAND_0 ELSE DUP 1 = IF DROP PROCESS_COMMAND_1 ELSE 2 = IF PROCESS_COMMAND_2 THEN THEN THEN ; : START_SERVER 400 3 0 FILL BEGIN 400 C@ 0<> IF BEGIN 402 C@ 0<> UNTIL SWITCH_COMMAND CONNECT_TO_ID 1 300 C! 400 3 0 FILL THEN KEY? UNTIL ; Наш сервер готов! Теперь давайте напишем клиент: Для начала напишем функции для отправки/получения сообщений:VARIABLE MYID : CONNECT_TO_SERVER 0 RBP! ; : SET_READY 1 302 C! ; : WAIT_WHILE_EXECUTED BEGIN TICK 400 C@ 0<> UNTIL ; : GET_SIZE CONNECT_TO_SERVER 0 301 C! MYID C@ 300 C! 0 400 C! SET_READY WAIT_WHILE_EXECUTED 401 @ ; : RECEIVE_MESSAGE CONNECT_TO_SERVER 1 301 C! 303 ! MYID C@ 300 C! 0 400 C! SET_READY WAIT_WHILE_EXECUTED 401 ; : SEND_MESSAGE CONNECT_TO_SERVER 2 301 C! MYID C@ 300 C! 0 400 C! 100 304 70 MOVE SET_READY WAIT_WHILE_EXECUTED ; : SEND 100 80 ACCEPT SEND_MESSAGE ; И так, код мы ввели. Давайте всё это подключим: MYID у первого клиента - 5, у второго - 6. Давайте протестируем! Всё сработало отлично! Поздравляю! Изменено 8 января, 2019 пользователем Alleksh 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти