Студент, закончил второй курс. За это время ничему полезному на практике не научился, заебало сортировать цифры и выводить массивы в консоль. Буквально сейчас решил попробовать хотя бы поверхостно изучить сетевое программирование, понять как это все работает. Первым заданием поставил перед собой написать простой чат (для двух рыл). От сюда возникли следующие вопросы:1. По какому принципу работает связь двух клиентов через сервер?2. Инициатор общения посылает запрос на сервер, а сервер второму клиенту?3. Как сервер понимает какому именно клиенту надо передать запрос?4. Обращается ли сервер к какой-то базе данных или как/что/куда?Выше я написал вопросы, вытекающие из моих предположений о работе сервера с клиентами. Если они в край не верны, то готов узнать истинный принцип работы сервера.п.с. Пишу на с/с++, хочу пока начать с чистого си с применением unix библиотек, затем под винду на плюсах готов буду попробовать.
Какие статьи можете порекомендовать или книжки по этой теме?
>>1019665>>1019665
>>1019670Тяжелое чтиво. Я так понимаю мне пока достаточно будет про TCP/IP почитать?
Немного не по теме, но надо постараться определиться, чего хочется делать дальше. Хорошим системным программистом если стать (дрова, сеть на уровнях ниже чем прикладной,системные службы/демоны) - можно неплохо жить. Но надо быть крутым, и надо учитывать что в РФ и европе системное программирование существует на уровне отдельных коммитов в опенсорс или на уровне гос. учреждений. Если размер зп не затмевает мозг, возьмут с распростёртыми. Если быть очень крутым, можно занять нишу очень высокооплачиваемого специалиста.Если хочется быстро и почти гарантированно - Java, веб-технологии, в общем то что сейчас требуется везде и не требует дикого напряжения сил. З.Ы. Это всё личный опыт общения с людьми и работы.
>>1019671все читай, и ещеmodern operating systems его жеи можно заодно pointers on c kenneth reek
>>1019677>>1019671а чат - сокеты дрочи
>>1019681Про сокеты уже наслышан и даже немного успел поработать с ними. Но мой главный вопрос заключался в понятии о работе сервера с клиентами. Вот в сети полно примером на каких-нибудь эхо-серверах, там все просто (и смысла в этом по сути нет). Так вот как говорить серверу, что я хочу общаться вон с тем, а не с этим? По какому принципу сервер обрабатывает эту информацию?
>>1019687создает отдельный процесс
>>1019661 (OP)Не слушай местных песдюковВеб макакинг вместе с жава-пердолинг даже не трогай, оно тебе не надо. Пока время есть, вкатывайся в с/с++, сети, протоколы - вот это серьезные вещи, где твое образование может пригодиться. А для того чтобы хуячеть на жс в перемешку с реактом,образование не нужно, тем более техническое. Курсов будет вполне достаточно.По теме читай Таненбаума
>>1019749Я и не собираюсь уходить только в веб макакинг. Я даже связи не нахожу веб макакинга с моим постом. Я просто хочу впервые написать что-то имеющее смысл и при этом простое (на мой взгляд). Сам конечно планирую осваивать плюсы, но на это нужно много свободного времени, помимо курсов во время учебы. Язык сложный, очень много библиотек, технологий на его базе, от всего этого кружится голова, поэтому надо начинать с чего-то простого. Сейчас сложно что-либо говорить о конкретном направлении, но это однозначно не веб макакинг.
>>1019764Единственное что я написал в своей жизни это ебуий тетрис на борландовской графике(это когда еще динозавры ходили), генератор паролей и какую-то хуйню в виде ездящих авто по карте города с минимальным понятием о пдд, и это все не считая кучи лаб со всякими шейкерами, квик сортами и прочим дерьмом в перемешку с вычислением диффур, решенем уравненй с кучами костылей (на практике это все офк нах никому не нужно, да и работает это все посредственно).
OSI.Всё живёт на OSI.Не знаешь его полностью — идёшь нахуй.
>>1019661 (OP)блять какой же ты даун, пхп или руби на рельсах выучи. на крестах он чат пишет вообще ахуеть, надеюсь тебя уже обоссали
>>1019838Пашел на хуй со своим пхп, на чем хочу на том и пишу, пиздуй в Б, животное.
>>1019661 (OP)Поверь мне, если ты добросовестно делал лабы и тебя ебали преподы за их грамотное выполнение, то научился. Ты бы охуел от того ужаса, который делают люди, не слышавшие про нормализацию БД, например, когда тебе приходится это дорабатывать. Ты просто смотришь и видишь - вот блять, а меня за такое еще в универе ебали. Так что не торопи коней.
>>1019815Добавлю в заметку этого покемона.
>>1019843Ну чат на С/С++ правда затея безумная, как из пушки по воробьям. Ты потратишь больше времени на изучение того, что тебе неизвестно когда понадобится, а на рынке ты никаких инноваций ты скорее всего не сделаешь. Лучше поищи себе актуальную задачу и ебашь её хоть на сырых байтах.
>>1019845Я не слышал про нормализацию БД. Лабы на основе бд делал как раз в прошлом семаке, но нам по сути фигня была, ограничивался элементарными sql запросами. Так что считай, что с бд я не умею работать, значит я все-таки не научился нихуя. К слову, лабы по тому, что я называл выше, делал сам, разбирался, не халтурил, но смысл в этом в сем был? Я не смогу сейчас воспроизвести код мердж или квик сортировок, не смогу вспомнить ни одной формулы по которой писал решение диффур методом рунге-кутта.
>>1019863Да похуй вообще, реализации все можно нагуглить за минуту. Главное, чтобы ты знал какие принципы в архитектуре ПО есть и какие стоит использовать в твоём случае, чтобы потом самому не охуевать от своих же костылей.
>>1019853На с/с++ пишу из-за того, что это единственные языки в которых я почти свободно ориентируюсь в плане синтаксиса и знаю о некоторых возможных нюансах, которые могут возникнуть во время говнокодинга. Я и не собираюсь становится третьим цукенбергом, я лишь хочу почувствовать взаимосвязь клиента с сервером на простом примере (чате).
>>1019876Ну хуй знает что тебе тут посоветовать. Судя по оп посту, ты линуксоид, так что если прям как батя хочешь сам всё сделать, то смотри там ОС-функции для сетевого взаимодействия, протоколы тебе наверно понадобятся только TCP, если без безопасности, а дальше на клиентах и серверах обработку принятых данных. Ну или можешь посмотреть уже готовые либы для этих задач. Всякие там бусты, кьюты
>>1019888Не, я далеко не линуксоид, просто подумал, что с сокетами c unix-библиотеками на чистом си смогу лучше понять, как это работает. Не знаю насколько это низкий уровень, но имею то, что имею. К тому же нашел небольшой мануал на 20 стр про сетевое программирование в linux, вроде понятно написано.
>>1019876ну так пиши на плюсах то, что на них пишут. драйвера для линукса там, игори на игорных библиотеках.
>>1019687Ричард Стивенс, TCP/IP в подлиннике.
>>1019863>Я не слышал про нормализацию БД.И то, что не надо номера телефонов в таблице «контакты» перечислять через запятую — тоже не слышал?Собеседование не пройти без этих знаний
>>1019876C# твой бро, синтаксис практически такой же, миллион библиотек и хорошая документированность. И всегда можно прикрутить код от с/с++
>>1019899на чистом си сокеты однохуйственны что в вин32, что в линуксе (и мс и Торвальдс оказались достаточно мудры, чтобы спиздить де-факто стандарт bsd).>>1020129>всегда можно прикрутить код от с/с++это норма в 2к17, трудно припомнить язык без ffi; это может даже маткад, мускль, небо и аллах
>>1020118Почему подлинник только? Нет достойных переводов? Я ангельский знаю плохо (знаю, надо фиксить это).
>>1020119Ты имеешь ввиду в одном поле их все писать? Ну до такого я бы не додумался, однако я все равно хз как лучше, добавлять новое поле, но уже с новым телефоном или же создавать под-таблицу?
>>1019661 (OP)Учи С.
>>1019764Начни с С, все библиотеки пишутся на ванильной сишечке.
>>1019764Если захочешь в веб то только Go, не слушай хейтеров, они не способны освоить эту прекрасную технологию и в 2к17 пишут пхп говнину.
>>1019661 (OP)1. Есть Васян, Петян и Серый (Сервер).Васян Серому: Э, Серый, передай Петяну что он чмо!Серый Васяну: Я тебя услышал (если TCP) / молчит (если UDP).Серый Петяну: Петян, ты чмо.Петян Серому: Принял, на созвоне (TCP) / молчит (UDP)2. Ну в общем да.3. Васян Серому сказал, что надо Петяну передать, что он чмо. Реализуется твоим протоколом связи. Когда Васян и Петян представляются Серому, они сообщают ему свой адрес, потому что Серый на районе центр и должен все знать, куда ехать бить ебальник ежели чего или маляву засылать (IP адреса)..4. Это как ты его настроишь, в сложных приложениях конечно же. В базе Серый может хранить адреса, текущий статус "чмо не чмо" и прочую полезную инфу, типа предпочтения пива у каждого из пацанов. В таком случае эта база становится главным в жизни Серого, и без неё он никто, лох, чмо, обоссал, так что не надо ломать его базу.В целом ты все верно пока понимаешь, бобра. Мехового. И успехов, как у Ерохи.
>>1019661 (OP)Вся эта сетевая еботня очень хорошо на эрланге пишется. А с с/с++ заебешься пыль глотать.
>>1020423Вам гугл перечисляет шекели за скатывание ньюфагов в goвно?
>>1020466Это охуенно. На уровне с пастой про электричество как поток говна с дерева.
>>1020622одному страшно на дне
>>1020399В русском варианте у неё на обложке написано "в подлиннике", хотя она переведена
>>1020622Нет, это охуенный язык.
Прошу пояснить мне, почему не удается приконнектиться к серверу на одной машине по глобальному ip, при этом по локальному все работает?Сервер:server.sin_addr.s_addr = inet_addr("глобальный ip");//INADDR_ANY; server.sin_port = htons(1337); server.sin_family = AF_INET;Клиент:client.sin_addr.s_addr = inet_addr("глобальный ip");//INADDR_ANY; client.sin_port = htons(1337); client.sin_family = AF_INET;
>>1021371Добавлю, сервер запускается с глобальным адресом и устанавливает режим прослушивания, ожидая запросов от клиента.