Сокеты в программировании. Пишем свой сервер и клиент.

แชร์
ฝัง
  • เผยแพร่เมื่อ 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
    #клиент
    #сервер
    #пайтон
    #сетевое_программирование
    #как_работают_сокеты

ความคิดเห็น • 55

  • @TsvetaevAlex
    @TsvetaevAlex 4 หลายเดือนก่อน +3

    3:56 нарисованы 2 сокета на 1 порту, будет ошибка сокета, port busy.
    Можно поставить порты 5000 и 8000 или 5000 и 5001. На один порт 2 вешать нельщя

    • @depdoprogramming2750
      @depdoprogramming2750  4 หลายเดือนก่อน

      да, я ошибся. нужно 2 разных порта. спасибо

    • @depdoprogramming2750
      @depdoprogramming2750  4 หลายเดือนก่อน +1

      а хотя нет. Если рассматривать это в контексте передачи данных, то как раз таки 1 порт используется.
      В серверной программе создается сокет с портом и айпи, а на клиентской просто указывается сокет к которому мы хотим присоидениться.
      Тобишь при обмене данными между двумя программами будет задействован 1 порт. Возможно я плохо показал это в видео

  • @user-pm2ge3hh1d
    @user-pm2ge3hh1d 14 วันที่ผ่านมา

    Чел, большое тебе спасибо, видос очень годный. Я удивлён что у тебя такой маленький канал, объясняешь материал в видео очень понятно и быстро

  • @michael007miksa
    @michael007miksa 2 ปีที่แล้ว +20

    Спасибо тебе не известный человек, занимаюсь программированием уже несколько лет, наконец-то понял как работают сокеты, продолжай

  • @user-lk2qh2cb7x
    @user-lk2qh2cb7x ปีที่แล้ว +2

    Охренеть как четко ты смог объяснить блин да даже я понял
    СПАСИБО ЧУВАК

  • @qotpiq1623
    @qotpiq1623 4 หลายเดือนก่อน

    На видео это выглядит так легко.
    Большое спасибо

  • @elizastro3018
    @elizastro3018 2 ปีที่แล้ว +3

    Очень круто, спасибо!

  • @user-ll1dt9mw2x
    @user-ll1dt9mw2x ปีที่แล้ว +2

    Парень , моё почтенье!

  • @user-ep6yi5ls4k
    @user-ep6yi5ls4k ปีที่แล้ว

    все отлично без води без лишнего

  • @user-ix7fy7um1v
    @user-ix7fy7um1v ปีที่แล้ว

    Чётко. Без лишнего )

  • @user-wc3nw7vi9c
    @user-wc3nw7vi9c ปีที่แล้ว +2

    Большое спасибо! А можно видео с созданием дочернего процесса и созданием соединения в нем? Оно вроде все просто, но не просто

  • @mariavladlife4429
    @mariavladlife4429 9 หลายเดือนก่อน

    спасибо! очень понятно

  • @user-ht1wg9vs4l
    @user-ht1wg9vs4l 5 หลายเดือนก่อน

    Спасибо! Помогло

  • @user-il6dm5jq1o
    @user-il6dm5jq1o 5 หลายเดือนก่อน

    Спасибо

  • @nazarsincopa880
    @nazarsincopa880 2 ปีที่แล้ว +2

    Ты мэтр!

  • @dampling2601
    @dampling2601 12 วันที่ผ่านมา

    У меня вопрос, а если у 2 процессов будут сокеты с одинаковыми портами. Будут ли конфликты с другими программами на пк, которые используют этот же порт

    • @depdoprogramming2750
      @depdoprogramming2750  12 วันที่ผ่านมา

      ты не сможешь создать второй сокет с портом, который уже используется. При создании сокета выдаст ошибку: Address already in use

  • @Kamingos
    @Kamingos ปีที่แล้ว

    классное видео

  • @baron2272
    @baron2272 ปีที่แล้ว

    Расскажите, как сделать обмен данными через Apache и MySQL

  • @cheremushk
    @cheremushk ปีที่แล้ว +1

    Дядь, всегда ли клиент должен закрывать подключение к серверу, после отправки и приёма сообщения от сервера? Что, если это чат?

    • @evan_kirk
      @evan_kirk 7 หลายเดือนก่อน

      Насколько я знаю, сокет на то и сокет, что позволяет сделать беспрерывное подключение.

    • @depdoprogramming2750
      @depdoprogramming2750  7 หลายเดือนก่อน

      @@evan_kirk да, сокет можно держать открытым и слать туда данные постоянно. Но надо учитывать что у ОС есть ограничения на количество открытых сокетов, поэтому нельзя иметь миллион открытых сокетов одновременно.
      есть еще системный вызов select, который может отслеживать активность на сокете. Тоесть если на сокет будут приходить какие то данные, то селект будут нотифицировать об этом

    • @evan_kirk
      @evan_kirk 7 หลายเดือนก่อน

      @@depdoprogramming2750 спасибо)

  • @user-sm5ot2fp3y
    @user-sm5ot2fp3y 10 หลายเดือนก่อน

    Товарищи коллеги, пожалуйста требуется совет или подсказка. Хочу сделать десктоп приложение(принципиально) предполагается серверная часть, сервер делать грубо говоря как показано в видео просто по tcp протоколу? А то друг с потока (я учусь в универе) сказал что нужно еще http протокол т. К. он на прикладном уровне, а tcp на транспортном. Изначально хотел сделать tcp сервер с обменом данными с клиентом без http, а теперь думаю такое возможно и так делают ли вообще. Проект я делаю для диплома

    • @depdoprogramming2750
      @depdoprogramming2750  10 หลายเดือนก่อน

      Протокол это просто оговоренный формат передачи сообщений

    • @depdoprogramming2750
      @depdoprogramming2750  10 หลายเดือนก่อน

      Http можно не реализовывать.

  • @TsvetaevAlex
    @TsvetaevAlex 4 หลายเดือนก่อน

    Почему 127...., можно использовать localhost?

    • @depdoprogramming2750
      @depdoprogramming2750  4 หลายเดือนก่อน

      это одно и то же.
      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"

  • @vladimirlrt2599
    @vladimirlrt2599 6 หลายเดือนก่อน

    А как защитить (зашифровать) соединение от перехвата и подмены данных между клиентом и сервером

    • @depdoprogramming2750
      @depdoprogramming2750  6 หลายเดือนก่อน +1

      шифрование это тема отдельного видео, но если на практике, то можно использовать готовые библиотеки. Например в python можно использовать библиотеку ssl

  • @helloworld-fv8kx
    @helloworld-fv8kx 2 ปีที่แล้ว +1

    а как сделать сервер на удаленном компьютере(например на aws) а клиент на своем компьютере?

    • @depdoprogramming2750
      @depdoprogramming2750  2 ปีที่แล้ว

      я с aws работал только 1 раз, но на сколько я помню они просто предоставляют удаленный компьютер если коротко.
      точно также, как я показал в конце видео. я там запускаю сервер на одном компьютере, а клиент на другом. Я использую локальный ip-адресс компьютера, но у компьютера есть еще и глобальный айпи адресс(он кстати может быть динамическим(меняется каждый раз при подключении) либо статическим(закреплен за вами интернет провайдером. обычно за такое нужно доплачивать)). Так вот сделать нужно все также, только вместо локального айпи использовать глобальный.
      Нужно узнать глобальный айпи адресс удаленного компьютера - запустить сервер с этим айпи адрессом и потом поключаться с к этому айпи адрессу с клиента

    • @helloworld-fv8kx
      @helloworld-fv8kx 2 ปีที่แล้ว

      @@depdoprogramming2750 ок, нужно будет попробовать

    • @helloworld-fv8kx
      @helloworld-fv8kx 2 ปีที่แล้ว

      ​@@depdoprogramming2750 получилось!!! все работает. Бооожеее, 4 дня у меня на это ушло, чтобы понять как это все работает. Сделал я на aws, добавил http в secure groupe ,открыл порт, запустил сервер с++, запустил клиент на своей машине и все заработало !!!! юхууу

  • @sin_ner1492
    @sin_ner1492 ปีที่แล้ว

    Кто нибудь считал, сколько раз он сказал слово сокет?

  • @R4isiN77
    @R4isiN77 ปีที่แล้ว

    А можно исходник программы в видео?

  • @user-bc6jr9mf3e
    @user-bc6jr9mf3e ปีที่แล้ว

    а как сделать русский язык?

  • @user-ym6sd5ci7e
    @user-ym6sd5ci7e 22 วันที่ผ่านมา

    А через интернет ?

    • @depdoprogramming2750
      @depdoprogramming2750  22 วันที่ผ่านมา

      @@user-ym6sd5ci7e что ?

    • @user-ym6sd5ci7e
      @user-ym6sd5ci7e 22 วันที่ผ่านมา

      @@depdoprogramming2750 =)) Прости, не увидел, что половину комментария стёр. Я имел ввиду, есть ли гайд как написать клиент-сервер для передачи сообщений (типа "чат") через интернет \ локальную сеть между двумя компами?

    • @user-ym6sd5ci7e
      @user-ym6sd5ci7e 22 วันที่ผ่านมา

      @@depdoprogramming2750 ну или хотя-бы чрез тунгл.

    • @depdoprogramming2750
      @depdoprogramming2750  22 วันที่ผ่านมา

      ​@@user-ym6sd5ci7e нужно настроить порт форвардинг на роутере. Глобальный интернет не видит твой комьютер, так как он находится в локальной сети. Вся коммуникация c шлобальной сетью идет через роутер, который распределяет трафик по локальной сети. Соответсвенно нужно зайти в настройки роутера (обычно перейти по адрессу 192.168.0.1) и там указать, что весь трафик с порта X нужно направлять на компьютер с адрессом Y и портом Z в локальной сети.
      PS.
      +нужно чтобы клиент подключался к айпи роутера, тобишь айпи, который видно в глобальной сети. обычно этот айпи динамический - провайдер выдает каждый раз новый айпи. Можно попросить у провайдера статический айпи, но обычно за это нужно доплачивать

    • @user-ym6sd5ci7e
      @user-ym6sd5ci7e 22 วันที่ผ่านมา

      @@depdoprogramming2750 спасибо!

  • @dacyn8417
    @dacyn8417 ปีที่แล้ว

    Я написал ip сервара в клиенте и в сервер, запускаю пишу, и он просто закрывается.

    • @depdoprogramming2750
      @depdoprogramming2750  ปีที่แล้ว +1

      Скорее всего что то неправильно сделали

    • @dacyn8417
      @dacyn8417 ปีที่แล้ว

      ​@@depdoprogramming2750 говорит то что сервер (компьютер) отклонил подключение

    • @depdoprogramming2750
      @depdoprogramming2750  ปีที่แล้ว

      @@dacyn8417 ну это нужно смотреть. Попробуйте взять код по ссылке в описании видео

    • @dacyn8417
      @dacyn8417 ปีที่แล้ว

      @@depdoprogramming2750 хорошо, спасибо

    • @slavik15971597
      @slavik15971597 ปีที่แล้ว +1

      Сервер надо запускать с локальным адресом. А вот клиенту надо обращаться к серверу через внешний адрес.