Як дані передаються в мережі? Java Networking: Сокети, TCP/IP, HTTP, JSON

  Рет қаралды 5,369

Bobocode

Bobocode

Күн бұрын

👉 Приєднуйся до Bobocode Community: www.bobocode.com/
____________________________________________
Patreon: / bobocode
GitHub: github.com/bobocode-projects
Telegram: t.me/bobocode​
LinkedIn: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
____________________________________________
12-те заняття тренувальної програми Ultimate Enterprise Java (2021).
УВАГА! Відеозапис не містить активної частини заняття.
00:00 - Нарізка основних моментів
03:04 - Початок
04:03 - Мережева архітектура
07:06 - Що таке Сокет?
07:45 - Демо по сокетах
08:28 - Пакет java.net
09:55 - Реалізовуємо сервер
11:22 - Як читати дані з сокета?
15:22 - Реалізовуємо клієнт
11:22 - Як писати дані в сокет?
23:10 - Для чого потрібна багатопоточність?
23:26 - 🔥 Робимо сервер багатопоточним
30:01 - Експериментуємо...
35:00 - Для чого нам сокети?
35:53 - TCP vs. UDP
36:33 - Як дані передаються в мережі?
37:13 - Типи комунікації
38:21 - JSON - Типовий формат даних
39:45 - Як конвертувати JSON в Java обʼєкт?
41:04 - ЗАВДАННЯ: р еалізувати свій JSON конвертер
46:29 - Ніякої магії не існує
48:50 - Огляд HTTP протоколу
55:41 - Q&A по HTTP
01:00:24 - Що ми зазвичай робимо на проектах?
01:01:57 - ЗАВДАННЯ: знайти картинку з найбільшим розміром
01:03:55 - Для чого мені це все знати?
#opensource #java #education

Пікірлер: 33
@Bobocode
@Bobocode Жыл бұрын
👉 Навчання від Bobocode: bit.ly/3IRrJhj
@k12370rty
@k12370rty 2 жыл бұрын
Дуже дякую.
@yasha802
@yasha802 2 жыл бұрын
Дякую за чудову лекцію 😊😊
@ASDjonok
@ASDjonok 3 ай бұрын
Дякую
@user-wv7pk5sh3h
@user-wv7pk5sh3h Жыл бұрын
Дякую, дуже якісний контент в українському інтернет-просторі.
@serhiidorodko2682
@serhiidorodko2682 2 жыл бұрын
Привіт, дуже класні уроки, дякую! В завданні про custom json converter як раз вдало підходить використання String Block, згаданий в записі Modern Java)
@MrRomanvideo
@MrRomanvideo Жыл бұрын
😂
@Bobocode
@Bobocode 2 жыл бұрын
ДЗ: 1. Реалізувати примітивний JSON мапер (41:04) 2. Знайти картинку з найбільшим розміром (01:01:57) 3. Вправа hello-network-socket (bit.ly/3rGyThg)
@goodvin8554
@goodvin8554 Жыл бұрын
Не зрозуміло завдання 2. Потрібно її вірішити зробив завдання на голих сокетах або можна використовувати якісь інші більш високорівневі компоненти? Бо там сайт Наса робить редірект на HTTPS протокол.
@Bobocode
@Bobocode Жыл бұрын
@@goodvin8554 HTTPS запит також можна зробити через "голий" сокет, просто треба трохи налаштувань.
@goodvin8554
@goodvin8554 Жыл бұрын
@@Bobocode через SSLSocketFactory ?
@caffeinejavacode1475
@caffeinejavacode1475 Жыл бұрын
1:03:56 гарний поінт
@user-bn5en3eo4q
@user-bn5en3eo4q 8 ай бұрын
Дуже цікаво. Дякую за таке чудове відео. Насправді, рік тому, я спробував створити простенький багато-поточний чат, так як цікавився тим як працюють компʼютерні мережі на низькому рівні. Спочатку тестував на локальному хості. Потім, прокинувши порт, спробував передати повідомлення на інший компʼютер через маршрутизатор. Далі я зохітв протестувати програму по мережі, але зʼєднання з хостом не відбулося. Помучившись і почитавши різноманітну інфу, я зрозумів, що з’єднання по мережі не вийде через те, що ip адреса мого маршрутизатора була приватною. Хоча можна було відправляти повідомлення через сусідський wifi, такий от експіріенс😢😅
@Bobocode
@Bobocode 8 ай бұрын
Привіт! Якщо нема статичного IP, Ви можете встановити собі ngrok.
@user-bn5en3eo4q
@user-bn5en3eo4q 7 ай бұрын
Дякую за пораду! Не знав, що є таке обхідне рішення.
@olegprylipko6084
@olegprylipko6084 2 жыл бұрын
Не бачу приводу не подякувати)) лекцiя во👍 ДЗ во🤟 Хто буде робити ДЗ напишiть розмір найбільшої картинки, я зміг знайти тiльки content-length=[178] і той у всіх однаковий
@mykhailomolnar2432
@mykhailomolnar2432 Жыл бұрын
На момент комента це картинка mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00010/soas/rdr/ccam/CR0_398381250PRCLF0030000CCAM05010L1.PNG і Content-Length - 548726
@FillLemon
@FillLemon Жыл бұрын
Також всюди 178, дивно може від api_key залежить
@baibula
@baibula 3 ай бұрын
Скоріше за все у вас статус 301 і ви не зробили редірект.
@Bobocode
@Bobocode 7 сағат бұрын
@@baibula дякую. Саме так, там всюди треба опрацьовувати редірект.
@user-fw2jj9ck4y
@user-fw2jj9ck4y 19 сағат бұрын
Спробував зробити домашнє завдання, але у другій вправі запит повертає "moved permanently". Чи нормально це?
@Bobocode
@Bobocode 7 сағат бұрын
Так - це означає редірект. Якщо ви відриєте будь-яку з картинок, то побачете, що браузер робить редірект. Спробуйте відкрити: mars.jpl.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG і вас перенаправить на mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG Щоб в коді зробити відповідний редірект, вам треба перевіряти статус код відповіді (в даному випадку він 302 MOVED PERMANENTLY), а тоді витягувати з хедера "Location" посилання, куди робити редірект і по ньому виконувати новий запит.
@bizkvit1985
@bizkvit1985 2 жыл бұрын
По завданню "Реалізувати примітивний JSON мапер" не вистачає прикладу реалізації.
@yasha802
@yasha802 2 жыл бұрын
Та це міні дз, реалізація за вами)
@dolivoserg3603
@dolivoserg3603 Жыл бұрын
для прикладу моя реалізація @SneakyThrows private static T jsonToObj(String json, Class userClass) { var constructor = userClass.getConstructor(); T user = constructor.newInstance(); for (String line : json .replaceAll("\"", "") .split(" ")) { if (!line.contains(": ")) continue; //parsing String[] fieldValue = line .replaceFirst(",", "") .trim() .split(": "); //deserialize var declaredField = userClass.getDeclaredField(fieldValue[0]); var value = fieldValue[1]; declaredField.set(user, value); } return user; }
@connection_failed
@connection_failed Ай бұрын
Намагаюсь підключитись до ноута Тараса як у відео, щось не виходить. Підскажіть що не так?)
@Bobocode
@Bobocode Ай бұрын
Якщо це жарт - то 😂. Якщо ж ні, то до ноута Тараса ви можете підключитися тільки, якщо він ввімкнений, "слухає" конкретний сокет, до якого ви намагаєтеся підключитися і відповідний порт відкритий на зовні...
@connection_failed
@connection_failed Ай бұрын
@@Bobocode звісно жарт, не все так погано :D
@Bobocode
@Bobocode Ай бұрын
@@connection_failed 😅
@antonmaliar3463
@antonmaliar3463 Жыл бұрын
не зовсім зрозуміло чому джава не працює з TCP, ми ж можемо створити server socket і вказати в ньому любий порт, а основна робота TCP це ж робота з портами, чи тут вся фішка в тому що ми ці порти створює в віртуальній машині а не операційній системі?
@Bobocode
@Bobocode Жыл бұрын
Java працює з TCP. Точніше в Java ми, зазвичай використовуємо TCP і працюємо поверх нього.
@antonmaliar3463
@antonmaliar3463 Жыл бұрын
@@Bobocode дякую
格斗裁判暴力执法!#fighting #shorts
00:15
武林之巅
Рет қаралды 48 МЛН
Why? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 29 МЛН
Эффект Магнуса
10:37
GetAClass - Физика в опытах и экспериментах
Рет қаралды 3,8 М.