Сокеты в программировании. Пишем свой сервер и клиент.
ฝัง
- เผยแพร่เมื่อ 25 ส.ค. 2024
- Привет,
в этом видео я расскажу о том, что такое сокеты в программировании.
Также я реализую пример сервера и клиента на языке программирования Python, чтобы показать как работают сокеты на практике.
🌵🌵🌵🌵🌵🌵🌵🌵🌵🌵
Репозиторий с реализацией клиента и сервера на java, c, python: github.com/Vla...
🌵🌵🌵🌵🌵🌵🌵🌵🌵🌵
Полезные ссылки:
www.geeksforge...
ru.wikipedia.o...)
en.wikipedia.o...
ru.wikipedia.o...
ru.wikipedia.o...
🌵🌵🌵🌵🌵🌵🌵🌵🌵🌵
😉 Подписывайтесь на канал 😉
#сокеты
#socket
#сети
#программирование
#programming
#python
#клиент
#сервер
#пайтон
#сетевое_программирование
#как_работают_сокеты
3:56 нарисованы 2 сокета на 1 порту, будет ошибка сокета, port busy.
Можно поставить порты 5000 и 8000 или 5000 и 5001. На один порт 2 вешать нельщя
да, я ошибся. нужно 2 разных порта. спасибо
а хотя нет. Если рассматривать это в контексте передачи данных, то как раз таки 1 порт используется.
В серверной программе создается сокет с портом и айпи, а на клиентской просто указывается сокет к которому мы хотим присоидениться.
Тобишь при обмене данными между двумя программами будет задействован 1 порт. Возможно я плохо показал это в видео
Чел, большое тебе спасибо, видос очень годный. Я удивлён что у тебя такой маленький канал, объясняешь материал в видео очень понятно и быстро
Спасибо тебе не известный человек, занимаюсь программированием уже несколько лет, наконец-то понял как работают сокеты, продолжай
Охренеть как четко ты смог объяснить блин да даже я понял
СПАСИБО ЧУВАК
На видео это выглядит так легко.
Большое спасибо
Очень круто, спасибо!
😎
Парень , моё почтенье!
все отлично без води без лишнего
Чётко. Без лишнего )
Большое спасибо! А можно видео с созданием дочернего процесса и созданием соединения в нем? Оно вроде все просто, но не просто
не думаю что в ближайшее время
спасибо! очень понятно
Спасибо! Помогло
Спасибо
Ты мэтр!
У меня вопрос, а если у 2 процессов будут сокеты с одинаковыми портами. Будут ли конфликты с другими программами на пк, которые используют этот же порт
ты не сможешь создать второй сокет с портом, который уже используется. При создании сокета выдаст ошибку: Address already in use
классное видео
Расскажите, как сделать обмен данными через Apache и MySQL
Дядь, всегда ли клиент должен закрывать подключение к серверу, после отправки и приёма сообщения от сервера? Что, если это чат?
Насколько я знаю, сокет на то и сокет, что позволяет сделать беспрерывное подключение.
@@evan_kirk да, сокет можно держать открытым и слать туда данные постоянно. Но надо учитывать что у ОС есть ограничения на количество открытых сокетов, поэтому нельзя иметь миллион открытых сокетов одновременно.
есть еще системный вызов select, который может отслеживать активность на сокете. Тоесть если на сокет будут приходить какие то данные, то селект будут нотифицировать об этом
@@depdoprogramming2750 спасибо)
Товарищи коллеги, пожалуйста требуется совет или подсказка. Хочу сделать десктоп приложение(принципиально) предполагается серверная часть, сервер делать грубо говоря как показано в видео просто по tcp протоколу? А то друг с потока (я учусь в универе) сказал что нужно еще http протокол т. К. он на прикладном уровне, а tcp на транспортном. Изначально хотел сделать tcp сервер с обменом данными с клиентом без http, а теперь думаю такое возможно и так делают ли вообще. Проект я делаю для диплома
Протокол это просто оговоренный формат передачи сообщений
Http можно не реализовывать.
Почему 127...., можно использовать localhost?
это одно и то же.
localhost=127.0.0.1
en.wikipedia.org/wiki/Localhost:
"This resolution is normally configured by the following lines in the operating system's hosts file:
127.0.0.1 localhost"
А как защитить (зашифровать) соединение от перехвата и подмены данных между клиентом и сервером
шифрование это тема отдельного видео, но если на практике, то можно использовать готовые библиотеки. Например в python можно использовать библиотеку ssl
а как сделать сервер на удаленном компьютере(например на aws) а клиент на своем компьютере?
я с aws работал только 1 раз, но на сколько я помню они просто предоставляют удаленный компьютер если коротко.
точно также, как я показал в конце видео. я там запускаю сервер на одном компьютере, а клиент на другом. Я использую локальный ip-адресс компьютера, но у компьютера есть еще и глобальный айпи адресс(он кстати может быть динамическим(меняется каждый раз при подключении) либо статическим(закреплен за вами интернет провайдером. обычно за такое нужно доплачивать)). Так вот сделать нужно все также, только вместо локального айпи использовать глобальный.
Нужно узнать глобальный айпи адресс удаленного компьютера - запустить сервер с этим айпи адрессом и потом поключаться с к этому айпи адрессу с клиента
@@depdoprogramming2750 ок, нужно будет попробовать
@@depdoprogramming2750 получилось!!! все работает. Бооожеее, 4 дня у меня на это ушло, чтобы понять как это все работает. Сделал я на aws, добавил http в secure groupe ,открыл порт, запустил сервер с++, запустил клиент на своей машине и все заработало !!!! юхууу
Кто нибудь считал, сколько раз он сказал слово сокет?
А можно исходник программы в видео?
github.com/Vladddd46/servers_examples
а как сделать русский язык?
А через интернет ?
@@user-ym6sd5ci7e что ?
@@depdoprogramming2750 =)) Прости, не увидел, что половину комментария стёр. Я имел ввиду, есть ли гайд как написать клиент-сервер для передачи сообщений (типа "чат") через интернет \ локальную сеть между двумя компами?
@@depdoprogramming2750 ну или хотя-бы чрез тунгл.
@@user-ym6sd5ci7e нужно настроить порт форвардинг на роутере. Глобальный интернет не видит твой комьютер, так как он находится в локальной сети. Вся коммуникация c шлобальной сетью идет через роутер, который распределяет трафик по локальной сети. Соответсвенно нужно зайти в настройки роутера (обычно перейти по адрессу 192.168.0.1) и там указать, что весь трафик с порта X нужно направлять на компьютер с адрессом Y и портом Z в локальной сети.
PS.
+нужно чтобы клиент подключался к айпи роутера, тобишь айпи, который видно в глобальной сети. обычно этот айпи динамический - провайдер выдает каждый раз новый айпи. Можно попросить у провайдера статический айпи, но обычно за это нужно доплачивать
@@depdoprogramming2750 спасибо!
Я написал ip сервара в клиенте и в сервер, запускаю пишу, и он просто закрывается.
Скорее всего что то неправильно сделали
@@depdoprogramming2750 говорит то что сервер (компьютер) отклонил подключение
@@dacyn8417 ну это нужно смотреть. Попробуйте взять код по ссылке в описании видео
@@depdoprogramming2750 хорошо, спасибо
Сервер надо запускать с локальным адресом. А вот клиенту надо обращаться к серверу через внешний адрес.