На этом занятии мы познакомимся с основными принципами работы клиент-серверных приложений, научимся передавать данные по протоколам tcp и udp, узнаем как они работают и чем отличаются. Изучим что такое web сокеты (socket) и научимся их создавать на языке программирования C#.
@mathewbal39904 жыл бұрын
А как принять на сервер файл ?
@FloatingGames Жыл бұрын
а как сделать так чтобы сервер был доступен во всей сети интернет потому что у меня не получается подключиться к нему через мобильные данные только по локальному вай фаю, месяц не могу решить эту проблему
@it-tb8od10 ай бұрын
Кучу видео пересмотрел про клиент-сервер на c#. Это самое понятное видео, причем как назло данный канал не рекомендовал ютуб раньше, спасибо за уроки, надеюсь канал оживет.
@montykay60035 жыл бұрын
Спасибо за ваши уроки, как надоели все эти: "Выучить c# за час", и подобный "информативный" контент по программированию, а в ваших видео тема раскрывается довольно хорошо и сами темы важные для основ обучения
@CODEBLOG5 жыл бұрын
Очень приятно, рад, что нравится )))
@gilyanachumashkayeva88384 жыл бұрын
Ох , ничего себе , неужели я нашла нормальный контент + нормальным объяснением ( русским языком 😍, а не компьютерным и слишком заумным) для новичков кто только изучает это - НАХОДКА, спасибо! Попытаюсь написать сегодня программу
@дядявася-м3д4 жыл бұрын
@@gilyanachumashkayeva8838 Ну как получилось???))
@dmagames67274 жыл бұрын
ещё можешь посмотреть это: kzbin.info/www/bejne/onyaXoWboaqHbMk
@mortarion_115 жыл бұрын
Я расскажу вам анекдот про UDP, но, боюсь, он до вас не дойдёт
@CODEBLOG5 жыл бұрын
а еще могу про TCP рассказать, а если он до вас не дойдет, то я повторю ))))
@va1r3473 жыл бұрын
а я могу расказать анекдот про машьіну времени , но знаю что вам не понравится!
@pvd41703 жыл бұрын
Спасибо большое за ваши уроки!) Очень доступно объясняете и без воды!)
@aleksandercross59364 жыл бұрын
Спасибо за пример написания кода. Вы мне очень помогли разобраться в сокетах
@atler98654 жыл бұрын
это просто капец какая интересная тема. Просто эйфорию чуствую когда всё получается. Властелин сети.)))
@mkrugl5 жыл бұрын
Отличный стрим! Благодарю. В универе задали написать клиент-серверное приложение, поэтому обратился к вашему видео!
@CODEBLOG5 жыл бұрын
Это хорошо, что видео помогают в учебе )
@deverloperfantom13725 жыл бұрын
что у тебя за универ такой что просит такое написать)
@mkrugl5 жыл бұрын
Deverloper Fantom университет Дубна
@deverloperfantom13725 жыл бұрын
@@mkrugl запиарь универ как называется
@mkrugl5 жыл бұрын
Deverloper Fantom хороший продукт в рекламе не нуждается в 😬🤠
@kirillshvetsov77453 жыл бұрын
Спасибо за урок!
@AlexV-zg6co4 жыл бұрын
Благодарим тебя, Вадим
@gijduvon63793 жыл бұрын
Блин, кому сейчас нужны уроки по большому фреймворку! Надо было делать сразу на core
@igorcoolman5 жыл бұрын
я еще 16 не досмотрел, вот вы лепите )
@CODEBLOG5 жыл бұрын
2 раза в неделю ))
@pssp44504 жыл бұрын
Можете рассказать как работает (50:10) data.Append? Я понял конкретно то что идёт перекодирование от byte к string но почему внутри GetString находится буфер, 0 и size? если был бы только size было бы понятно то что идёт перекодирование size от byte к строку но что там делают buffer и 0? В инете как-то не удаётся найти инфу по этому поводу, а сайт майкрософт... ну, не то что можно понять новичку.
@roman65723 жыл бұрын
спасибо за урок)
@minoddein72054 жыл бұрын
Запихнул обработку и отправку сообщения в асинхронные методы у клиента и у сервера,стало хоть чуть-чуть походить на обычный чат,а не на рацию.Вопрос,как сделать чат многопользовательским на tcp,чтобы не было этих очередей?Вроде как,на udp это сделать гораздо проще,но меня интересует возможность на tcp.
@MagdakEH5 жыл бұрын
1:48:20 У меня почему-то позволяет запускать несколько экземпляров клиента) Все работают при этом, экспешн не вылетает Писал код синхронно с видосом
@ктото-ч7п5л3 жыл бұрын
можно попробовать в конфигурации release "запуск без отладки"
@The_Mavrik4 жыл бұрын
Хороший видос, но почему не 1080p?
@crazist3325 Жыл бұрын
Про игры скорее всего это веб сокет а он на тсп, но суть в риалтайм соединении(постоянном)
@shmyaks4203 жыл бұрын
а почему при создании udp подключения мы передавали аргумент по ссылке, а не по значению? 1:19:25
@isagidaiki8 ай бұрын
понял почему?
@lonernagibator55434 жыл бұрын
А если на разных Вижуал студио (1я на ПК, вторая на ноуте) написать клиент и сервер соответственно, то подскажите как поправить код адресов чтобы сервер смог принять данные. У меня роутер. (а то неинтересно проводить эксперимент на одном компе).
@fenraz6664 жыл бұрын
Вадим, вы упомянули в видео что желательно бы иметь коммерческий опыт и для этого можно поработать в гос.компании. Это имелось в виду именно опыт программирования? Или вообще какой-либо опыт работы. Просто хочу войти в айти, а опыт работы только инженером(
@Eltar0073 жыл бұрын
привет! Спасибо большое! Хороший материал. Пришлось, правда, поставить на 2х скорость, но все годно. Подскажите как вместо того, чтобы отправить данные на ip адрес 127.0.0.1, порт NNNN, отправить их на хост wss://example.com /ws?
@abdusamadjuraev26154 жыл бұрын
Вадим,что ты изучал после це решотка?)
@hematogen50g2 жыл бұрын
не answer а response. не человек же отвечает. Но это мелочи, урок очень полезный для меня.
@maniakm8974 жыл бұрын
Почему то даное приложение не работает с портом 8080. Но если порт поменять на другой - то работает нормально.
@CODEBLOG4 жыл бұрын
Значит порт просто занят другим приложением или заблокирован в брандмауэре
@inessa69584 жыл бұрын
Здравствуйте, подскажите, пожалуйста, что нужно передать в datagram серверу, чтобы он вернул клиенту список мак-адресов? Спасибо
@andreyartemov54104 жыл бұрын
чтобы через глобальную сеть подключиться, нужно либо статический ip либо хост?
@CODEBLOG4 жыл бұрын
Да, нужен будет белый IP или специальные сервисы. По серому тоже вроде как можно, но это не удобно
@andreyartemov54104 жыл бұрын
@@CODEBLOG а не подскажите, где бы я мог найти информацию как по серому коннектиться?
@ТвойХозяин-е8л4 жыл бұрын
Andrey Artemov ну шо, разобрался?
@НиколайТорощин-е6э5 жыл бұрын
Доброго времени суток) спасибо за данное видео 👍 подскажите пожалуйста, как реализовать отправку сообщений от клиента, к серверу и обратно, по Wi-Fi? Предположим есть два ноутбука один из них сервер, а другой клиент. На языке C#
@CODEBLOG5 жыл бұрын
Привет. А смысл такой же, не важно, будет это по wi-fi, локальную сеть или глобальный интернет, главное знать ip адрес и по нему стучаться.
@НиколайТорощин-е6э5 жыл бұрын
@@CODEBLOG понял) спасибо за внимание попробую
@НиколайТорощин-е6э5 жыл бұрын
@@CODEBLOG спасибо большое)) теперь полностью понял, как по локальной и вайфай сети подключается) попробую оформить это всё под xamarin)
@EdwardNorthwind5 жыл бұрын
Смотрю плей-лист последовательно, по видео не скакал. ref появились впервые, где их объясняли не ясно. Почему do {} while()? Если нет сообщений, зачем пытаться что-то получить, что-то считать и что-то делать в принципе?
@CODEBLOG5 жыл бұрын
хороший вопрос, ref И out наверное пропустил. если коротко ref позволяет передавать значимые типы по ссылке. но используются они не так часто на самом деле. наверно в одном из будущих видео запишу. do while нужно для того, чтобы было корректно установлено состояние сокета. иначе мы не можем быть на 100% уверены в корректности обращения udpSocket.Available до опроса endpoint
@random69594 жыл бұрын
А можно ли при работе с udp использовать udpSocket.accept() ?
@salir-63382 жыл бұрын
может ли клиент подключиться к серверу на разных компьютерах, имея только айпи серверного компа?
@pavelchagovskiy64475 жыл бұрын
Собирал по Вашему видело. Огромное спасибо. Даже удалось зациклить отправку клиента, чтобы можно было отправлять с клиента сообщение одно за одним. А как можно создать подобие ICQ передачи? Чтобы в одном приложении сразу сочетались сервер и клиент и у двух приятелей было по одному такому приложению? Как это правильно разработать? Заранее спасибо.
@CODEBLOG5 жыл бұрын
Посмотри эту статейку habr.com/ru/post/252021/
@АлексДжаванов5 жыл бұрын
@@pavelchagovskiy6447 НУ да это жизнь а жизнь как мы знаем ...
@q2zoff8325 жыл бұрын
@@pavelchagovskiy6447 В ядрах пишешь while (true ) { условие } а в запуске имя ядра = новое ядро (метод ядра) и всё
@milkxd15123 жыл бұрын
Что значит белый айпишник 34:57
@pavelchagovskiy64475 жыл бұрын
Продолжаю писать чат. Все указано в кодировке UTF8. Почему-то иногда проскальзывают знаки вопроса в элементе управления TextBox. Консоль все нормально принимает.
@CODEBLOG5 жыл бұрын
потому что кодировка winform приложения по умолчанию widows 1251
@tandinio5 жыл бұрын
Вадим, во-первых, большое спасибо за видео, прям очень понравилось. Во-вторых: 1) У меня exe-шник файла почему-то не создаётся. Во время сборки все ок, но все равно нет файла(приходится с 2х vs заходить). Можешь подсказать, как это исправить? 2) Я твой пример с 1 челом и сервером поместил в цикл и все круто работает, но я хотел создать что-то наподобие чата. Но когда 2 чел начинает писать, то прога виснет и ВСЁ. Я полагаю, что это из-за одиннаковых параметров 2х клиентов(я же одну и туже прогу запускаю, просто в 3х вижуалках) Можешь сказать, как 2го клиента подключить?
@CODEBLOG5 жыл бұрын
Так-с, смотри. Почему не создается exe я вообще не понял. Очень странно. Для того, чтобы это был чат для нескольких людей нужна немного другая архитектура. на храбре была статья, можешь почитать там habr.com/ru/post/252021/
@ЖеняВасилинчук-р4д4 жыл бұрын
Когда пытаюсь запустить сервер, вылетает exception в котором говорится что на методе bind я пытаюсь обратится к сокету методом запрещенным правами доступа. От админа запускал, та же хрень :( UPD: Зря панику развёл xD Хз кому интересно, но я это решил просто порт поменяв на 8888
@БогданМороз-ъ1й4 жыл бұрын
спасибо тебе большое, та же проблема была. Очень помог
@winstochurgle91333 жыл бұрын
Изменил на 8888 и всё равно не помогло :(
@silvera_tv2 жыл бұрын
Уроки отличные! Правда, этот дрончик в комментариях постоянно сбивает с мысли. Настолько раздражает и отвлекает от темы, что аж комментарий захотелось написать
@bloodborn96324 жыл бұрын
Всем привет кто подскажет где можно глянуть примеры написания rest и soap сервисов на с # хотябы самы простые примеры ?
@sashkosashok5 жыл бұрын
Судя по тому, как дыряво оповещает ютуб, можно сделать вывод, что оповещает он по UDP)
@CODEBLOG5 жыл бұрын
Спасибо, посмеялся )))
@atler98654 жыл бұрын
А ведь походу так и есть хД)))
@uoidqwt4 жыл бұрын
Как передавать C# обьекты по сети? У меня не получается привести к тому же типу после десеарелизации, выдает исключение
@CODEBLOG4 жыл бұрын
Значит что-то не так реализовано. должно работать
@fovibaltpictures46553 жыл бұрын
"Если запрос некоректный - послает" можно было не продолжать и так понятно. хах.
@TheHeidelsteinsDays3 жыл бұрын
Народ доброго всем. Никого не смутило, что что мы генерим переменные внутри бесконечного цикла, или это норм в C#?
@sayfulla19123 жыл бұрын
в циклах используются локальные переменные
@МалютаСкуратов-к3ъАй бұрын
Жаль что не рассказал про асинхронные методы ((
@Console.WriteLine Жыл бұрын
для продвижки
@hidan_hs5 жыл бұрын
Как отправить файл через сокет?
@CODEBLOG5 жыл бұрын
Текст преобразовать в массив байт и передавать блоками точно также
@imfrodo5 жыл бұрын
Не подскажешь, как лучше всего устроится на работу на 2 курсе?)) P.S. учусь на кибербезопасность, но это не особо важно, при надобности могу работать в любой IT отрасли ..
@CODEBLOG5 жыл бұрын
Ходить на собеседования. Много. Посмотреть в сторону бюджетных компаний (вузы, школы, гос. предприятия и т.д.), возможно если в городе есть крупные IT компании, то они проводят стажировки, пробовать туда
@brianortega40875 жыл бұрын
Дружище. Вот скажи мне. Я уже 6 час копаюсь в интернете и ищу б***скую реализацию TCP через интернет (2 удалённых пк), а везде "хорошие люди" со своими localhost'aми. Может быть подскажешь что нибудь?
@CODEBLOG5 жыл бұрын
Работать должно точно также, только важно чтобы были открыты порты и использовался белый айпишник
@brianortega40875 жыл бұрын
@@CODEBLOG То есть в условном конструкторе TcpClient в клиенте должен стоять (я сервер) мой публичный IP в 2ip.ru?
@CODEBLOG5 жыл бұрын
Не, вряд ли серый IP пропустит. Тут нужно обратиться к провайдеру и получить белый (статичный) IP + проверит настройку брендмауера на компе и роутере, чтобы порты были открыты
@malikvalley4 жыл бұрын
Написал все точь в точь. Сервер получает сообщение клиента. Клиент НЕ получает сообщение сервера.
@ИлларионИванов-л1е Жыл бұрын
anal_status_udp открывали? 😁
@НиколайКоваленко-г2к2 жыл бұрын
Когда только учишься работать лучше обходится без var, а использовать имена типов что бы было понятно.
@mkrugl5 жыл бұрын
Единственное, что хотелось бы, это поподробнее рассказывать о строках, которые пишите. Про builder так и не понял что он делает
@CODEBLOG5 жыл бұрын
А что именно не понятно? Builder по сути удобный инструмент для работы со строками и все )
@mkrugl5 жыл бұрын
CODE BLOG - Программирование и IT Благодарю!) Да я так и понял) Просто у нас препод не любит, когда одной фразой отвечают. Он любит, когда сложными предложениями говорят :D
@vadimkcustom17592 жыл бұрын
лайк если в 2022 учишь шарп
@igorcoolman5 жыл бұрын
попытался зациклить клиента и выдало: Необработанное исключение: System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен. Имя объекта: "System.Net.Sockets.Socket". если while ставлю в самое начало метода, то сообщения доходят через одно
@CODEBLOG5 жыл бұрын
если выходит за пределы видимости, объект уничтожается. а так нужно смотреть, с ходу сложно сказать, в чем косяк
Зависит от того, что именно тебе нужно. если делаешь сам полностью систему, то сам можешь выбрать порт, а если подключаешься к какому-то приложению, то должно быть написано в мануале )
@armenboyajyan88385 жыл бұрын
@@CODEBLOG скажем я имею два консольных приложения,одно играет роль сервера,другой-клиента,и клиент должен подключатся к серверу и наоборот.Можно как то узнать порт ,скажем,сервера?
@CODEBLOG5 жыл бұрын
@@armenboyajyan8838 Ты сам выбираешь любой порт из доступных. главное, чтобы они совпадали и желательно не конфликтовали с другими приложениями
@armenboyajyan88385 жыл бұрын
@@CODEBLOG ах я сам должен выбирать,ладно,спасибо большое,а то как то это стало проблемой
@xtereone5 жыл бұрын
Чел ты знаешь написал , что в своем курсе рассмотришь Unity, но ты его ни в одном из своих курсов не представил. Представишь?
@igorcoolman5 жыл бұрын
привет из 2000-х, только спустя 20 я смог написать жалкое подобие чата ) и то нихера не понял, просто тупо перепечатывал ) даже если допилю, кто со мной будет в нем сидеть? )
@CODEBLOG5 жыл бұрын
может быть кто-нибудь из других подписчиков будет )))
@АлексДжаванов5 жыл бұрын
Ну можете жену и детей туда посадить )
@olegholostenco87364 жыл бұрын
видео реклама каждые 5-10 минут, это просто жесть....
@atler98654 жыл бұрын
adblock на хром поставь и будет тебе счастье
@alkelov5 жыл бұрын
У меня почему - то у клиента(UDP) на 75 строке выходит исключение
@alkelov5 жыл бұрын
Моя ошибка , всё из-за того что написал 127.0.0.2 вместо 127.0.0.1
@CODEBLOG5 жыл бұрын
Бывают ошибки ) ничего страшного )
@veerit38223 жыл бұрын
шёл 18 день изучения c#.Стало всё ещё более не понятным.
@Doker-man2 жыл бұрын
Подскажите пожалуйста, сделал клиент сервер по вашему уроку на Localhost всё работает отлично а вот пробую клиент на другой комп кинуть и задать ему внешний IP моего Пк где стоит серверное часть и коннекта нет клиент не видит сервер --------------------------------------------------------- Сервер //Точка подключения var tcpEndPoint = new IPEndPoint(IPAddress.Any, port); ---------------------------------------------------------- Клиент var ip = new IPAddress(new byte[] { 188,134,90,121 }); int port = 8080; //Точка подключения var tcpEndPoint = new IPEndPoint(ip, port); порт и там и там 8080
@АлтынАсарова-ж1ю4 жыл бұрын
51 08
@levshx5 жыл бұрын
А про UDP ?
@CODEBLOG5 жыл бұрын
Так в видео же было про UDP. сначала про TCP, а потом то же самое на UDP
@ivanomelchenko18954 жыл бұрын
+++
@Name-kj8ew4 жыл бұрын
Я єдиний, хто піймав подібне виключення??? System.Net.Sockets.SocketException (10048): Only one usage of each socket address (protocol/network address/port) is normally permitted
@atler98654 жыл бұрын
Пофиксил?
@Name-kj8ew4 жыл бұрын
@@atler9865 , поки ні. Знаю, що дане виключення виникає, якщо сокет використовується, однак не розумію де і чим він юзається
@rtgRealTacticGames7 ай бұрын
@@Name-kj8ew сам не ловил, но предполагаю что это занятый порт другой программой, посмотреть можно через netstat -ano | find ":наш_порт" последний столбец это pid процесса, для обхода на вскидку в голову приходит использования диапазон портов
@ivanomelchenko18954 жыл бұрын
++++
@unimaster38285 жыл бұрын
0 дизлайков =)
@1pavka Жыл бұрын
Чат с одним подлчением это очень просто. Вот мультипользовательский гораздо интереснее и сложнее
@melkey_poc2 ай бұрын
Все конечно круто, и понятно что спустя 5 лет мои советы нафик никому не нужоны. Но все же, ну вот не могу не сказать )) Зачем "панель элементов" весь ролик занимает треть экрана ??? И автору неудобно постоянно полосой прокрутки пользоваться, и смотреть жуть как мешает. Уф))
@_goldmanv5925 Жыл бұрын
После этого урока отбивает заниматься программированием. И тут возможно автор не в чем ни виноват, это иди0ты кто придумал такие сложности намудрили такую лажу...
@andrewsed_uplisten20194 жыл бұрын
ты считаешь качество 720р это нормально? да я глаза сломал смотря твой стрим , а ведь глаза программиста это главный инструмент для взаимодействия головы с монитором
@Покнопочкам5 жыл бұрын
проще на Си все это
@CODEBLOG5 жыл бұрын
не проверял, но это не исключено )
@ВячеславВасильев-ь6й4 жыл бұрын
Блин и тут ни слова про многопоточность, создавать для каждого клиента новый порт бред какой то
@superspy20083 жыл бұрын
как связаны "каждые клиенты" и многопоточность? Внутри домена есть более эффективные средства взаимодействия, чем гонять пакеты через TCP на локалхосте
@kostya1306 Жыл бұрын
Лучше бы молча написали код с текстовыми комментариями. Русским языком вообще не владеете.
@Комрад-ю1ы10 ай бұрын
Охуеть, ты зашел на бесплатный курс, где чел делал свои ролики (кстати, неплохого качества) для блага других. Посмотрел и вместо благодарности решил кинуть предъяву. Похоже, что мозгом вообще не владеете)
@Gelenbagen5 жыл бұрын
Блин, не лучше ли писать часть кода, потом читать часть комментариев? Смотреть на эти бесконечные заикания сложно, да и мысль автор часто выражает криво
@etelionmelgan78844 жыл бұрын
до конца не досмотрел, по TCP/UDP откровенный бред, о том что UTF-8 кодируется от 1 до 4 байтов так же, надо бы знать, там даже подсказка в числе 8, код для TCP сервера рабочий только для небольших запросов, реально до 256 байт, не показано как грамотно обработать запрос длиной больше, как отправить, к примеру, большой кусок данных или сериализированный обьект, кроме того порт 8080 альтернативный для http, я б не советовал его грузить еще своим серваком зато были тупые анекдоты из 90х о tcp/udp
@Serjaru4 жыл бұрын
2 часа ни о чем! где мультисервер??? где async методы? для сервера актульное, чтобы было многопоточное подключение! а рассказывать два часа, как один сокет к другому - это жесть. В общем тема не раскрыта!
@domore67254 жыл бұрын
так что тогда ты такой умный тут делаешь? Видео не рассчитано на полное раскрытие, а всего лишь на ознакомление. Для новичка этого достаточно...
@АндрейЗернов-п7и3 жыл бұрын
Много воды, ничего толкового!!!! Речь не поставлена... Урок говно!!!!