На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами.
Дата отправки отчёта:
19 сентября 2017 г.
Задание выполнено: за
2 час. 28 мин.
Чему научился:
Повторил работу с TCP/IP ;)
Что было сложным:
Найти время ;)
Комментарии:
Очень классно получилось. / Люблю такие чтуки(сетевые технологии) ;) / Написал более лучший алгоритм(Почему?) - потому, что я сразу сделал отдельно библиотеку(Phone) и в ней не делал таких команд - типо - Console.Write("Hello"), но вы забыли добавить самое (почти) главное - проверку состояния подключения - я сделал это через Enum, в котором различные состояния(Connecting, Connected, ConnectionBreak, Sleep) - Эти состояния изменяются когда ты подключаешься или соединение разрывается, при каждом изменении состояния вызывается делегат(сделано через аксессор SET), а в основной программе(Не Phone) - вызывается метод - void ChangeConnectionState(State State), в котором есть SWITCH-CASE и он определяет, что делать, например если соединение разорвано, игра поставится на паузу и будут ждать другого игрока. Состояние очень важно, оно облегчит процесс добавление адекватного мультиплеера :))) И при разрыве соединения у меня нет спама, у меня появится надпись ;( Connection Breack ;( и (клиент или сервер) снова будет пытаться подключится - выведет сообщение <<<Connecting>>> и не будет ими спамить ;))))))))) Жалко, что я анимации и цвета не добовил в консоль (не подключил свою библиотеку - ConsoleR - времени не хватило) ;) Так например можно былобы за секунды 2-5 используя один метод в моей библиотеке (Waiter) который бы вывел сообщение нужного мне цвета(аргумент), так ещё и количество точек ('.') и скорость анимации указать можно, анимация в стиле - Connecting... - и эти 3(или сколько душе угодно) точки будут двигаться туда - сюда, указаное кол-во времени(Или вечно висеть, пока мы не законектимся) ;) Что уж сказать люблю консольную графику(большие игры делал и довольно красивые, но кривые по коду(я тогда ещё мало чего знал), а сейчас занят делать крупные проекты ;) ) ;))))) Хотел даже в стим игру сделать (Консольную игру - симулятор хакера + головоломки + приближенная реальность) и за месяцев 5-6 сверстал 3-6 % от всей игры - даже в этот момент у моей игры было больше функционала чем когда-либо в хакерском жанре ;))) И это я 5-6 месяцев писал прямо в Program.cs боже мой.... - вот поэтому я её долго так делал ;) / Иногда бывает сяду и делаю новый аналог моей игры(с классами ООП, библиотеки, как положено + больше функционала - НАМНОГО - даже есть провайдеры, твой ПК, носитили, диски и папки), но делать это тяжело, но интересно - прогресс медленно идёт и времени мало ;)))) Кстати та игра не совсем консольная, там и формы есть и свой скриптовый язык Links - я мучался 1 месяц с синхронизацией и придумыванием компиляции и синтаксиса(скриптовый язык в игре? Это просто шикккк - можно автоматизировать действия, не проверять сервера на уязвимости, а написать скрипт, который это делает - в Links есть и условия, но до циклов не дошёл ;) ) ;) / Короче кто хочет в неё поиграть или просто посмотреть, я предаставлю полный исходник этого проекта, чтобы не посылать вам exe файл, а вы в страхе открывали его ;))) / И к тем более это старый код ;) / Игра головоломка + жанр хакинг ;) Надеюсь вам понравится ;)/ Полный исходник игры HACK GAME будет чуть ниже :) Эх настальгия нахлынула по этим 6600 строчкам кода в Program.cs ЭХ..... Её даже проходил топ(3) ответов по тематике "программировние" в MailRu - и ему понравилось ;)))))
Архив проекта:Ссылка доступна после самостоятельного выполнения этого урока
Молодец, хорошо попрактиковался. з.ы. Смотрю у тебя на втором скрине пакет с числом 53 отправился, а на первом скрине, принялся но цвет серый, а не жёлтый, я то думал вначале, что серое, значит не удалось отправить, а по факту видимо баг с выбором цвета консоли вовремя =)
;))))) Понятно :) / Я вообще её доделать хотел и в Steam, но я сейчас не могу старый код продолжать - он ужасен :) Так что переписывать придётся... Кстати я подумал. И понял. Что можно даже OS сделать :) / Я это и сделаю + реализовал уже папки, глубокое сканирование файлов(индексирование), получение доступа в интерент через провайдера и тд. Получается псевдо реальность ;)))))) Мне ещё и друг сюжет начал писать :) Костыль буду долго делать - ведь это двигатель игры. Потом велосипед (история, наполнение контентом) В то что ты играл - это обучение - для обычного человека - это ГОЛОВОЛОМКА. Так что позже нужно будет реально думать головой - ведь будет оч много уязвимостей, а иногда даже действовать по другому :) Забавное то, что ты будешь прокачивать свою OS - сам писать программы - например - программа в которой можно будет смотреть файлы, открывать и изменять, не используя команды, а всего лишь кликая мышкой. Я хочу сделать порог вхождения минимальный - чтобы обычные люди тоже могли поиграть :)
Научился: Немножко стал понимать консольные приложения, я в них слабоват.
А так все интересно, получилось Трудности: Простая часть выбивала ошибку, понял причину, когда запустил всю программу Спасибо большое!
Научился: Первые шаги в проектировании Клиент-Серверных приложений Трудности: Ничего. Все очень подробно объяснено. Отличный урок! Новые знания!
Никогда раньше не приходилось работать с TCP/IP протоколом.
Самое близкое, что приходилось делать - это подключать устройство через виртуальный USB-порт (видимый как COM) для обмена данными. Поэтому с COM-портом работать умею (кстати, делала проект на C#, используя стандартный класс), а вот связывать между собой компьютеры ... теперь тоже умею :)