![]() |
Кто-нибудь знаком с такими языками программирования как: LD, FBD, SFC, ST, IL, CFC ?
Просто все они являются языками программирования ПЛК, и первые три из них - графические. Хотелось бы узнать, насколько сильно отличаются принципы программирования графических языков ПЛК от т.н. "неграфических", в частнотсти, и различие этих шести языков для ПЛК от всеми известных языков программирования (Объектно-ориентированных, скриптовых и т.д.) таких как: Delphi, C++, Assembler и т.д. |
Вопрос скорее к знающим Java, но и от любой помощи не откажусь.
Столкнулся с задачей написать клиент-сервер на любом языке, решающий простое задание. Т.к. сам сейчас начал изучать java, решил на нем и писать. Задание - сортировка шести чисел по частям. Имеется строка с шестью числами через пробел на сервере с ограничением на 3 клиентов. Клиент разбивает этот "массив" (никакой это не массив, просто слово другого не смог подобрать) на 3 куска и отправляет клиентам, чтобы они каждый свой кусок отсортировали и вернули серверу, чтобы что-то еще кое-что дальше сделать, но до этого еще дойти надо.... Так вот, по не знанию матчасти столкнулся с вопросами: 1. у меня при описании сервера есть переменная i, с помощью которой я и подсчитываю клиенты и обрубаю подключения новых, когда i>3. Хотя в мануале написано про какой-то backlog. . . . public ServerSocket(int port, int backlog) throws IOException Creates a server socket and binds it to the specified local port number, with the specified backlog. A port number of 0 creates a socket on any free port. . . . Как я понял, он и должен этим заниматься, и я поставил тройку после номера порта, но это ничего не дало. Скорее всего это я что-то делаю не так. 2. Не пойму как оперировать этими клиентами. Т.е. как сделать так, чтобы он первые 2 числа отправлял 1-му клиенту, вторые - 2-му, третьи - 3-му и чтобы я мог вывести на экран номер подключенного клиента. Знаю только как отправить что-то определенное и известное, но не в зависимости от номера клиента. Server:
Client:
В гугле в основном простейшие эхо-серверы на одного клиента. |
Непонятно зачем при осваивании основ работать с многопоточностью. Однопоточный сервер, принимаем подключения одно за другим в цикле. Определение порядкового номера подключения проблем вызывать не должно.
Backlog определяет длину очереди. Если сервер обрабатывает клиента быстрее, чем интервалы между клиентами (а это насколько я понял твой случай) в этом параметре нет смысла. Пример. Допустим backlog равен 5. На обработку клиента нужна минута. В первую секунду каждой минуты стучатся 3 клиента. 1 минута - все 3 клиента зашли в очередь и первый поступил на обработку. 2 минута - первый клиент отключился, в очереди остались двое, как раз хватает места для 3 новых клиентов. 3 минута - второй клиент отключился, в очереди осталось 4. Место осталось только для одного нового (backlog == 5), поэтому два остальных получат connection refused. |
Короче поковырялся сегодня - вроде как удалось передать каждому клиенту то, что нужно, но местами набыдлокодил - if в while - масло масленное. Ладно, разбираться потом буду. Все же сдавать уже в следующую пятницу, а еще сортировку по частям на всем этом реализовывать, да и препод по сетевым технологиям в языках ничего не смыслит. Главное, что работает на данном этапе. Плотнее языком летом займусь.
Сервер:
Клиент:
Вот, что выдает сервер:
|
06 апреля 2025 года. Воскресенье - 00:30 (Часовой пояс GMT +4). |
Русский vBulletin v3.5.2, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Перевод сделал zCarot