Jump to content
  • 0

Про сети вообще


semenyakinVS
 Share

Question

Доброго времени суток.

// ЛИРИКА

// Я неплохо понимаю в программировании, но только на локальной машине. Давно понял, что без сетей жизни нет, однако боялся браться за тему.

// Теперь понял, что пора. Итак.

Если не жалко, дайте ссылки на ресурсы или - ещё лучше - ответы на следующие вопросы:

1. Что такое сервер (в программном смысле, как Apache)? Что входит в его задачи? Каким образом можно его использовать для передачи:

а) Данных в браузер;

б) Данных на клиент, так, чтобы данные могли быть принятыми сторонним приложением.

2. Каким образом происходит общение между клиентом и сервером? (тут я говорю не только про браузер)?

Как могут общаться друг с другом два приложения-бинарника: сетевое и клиентское?

3. Что такое PHP? Как выглядит связка Apache + PHP? Хотелось бы статью с картинками, но буду благодарен за любую информацию.

4. Какие Вы знаете библиотеки для связки сервера и программ на С++ (win)? Тут я имею в виду пересылку пакетов программой-бинарником через Apache.

5. Насколько тяжело без сервера: напрямую, самом генерировать трафик и принимать его?

Послесловие: Заранее спасибо за ответы. Понимаю, что некоторые вопросы могут быть глупыми, но не здать их ещё глупее. Так буду топтаться на месте.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

1. Сервер - программа, обрабатывающая клиентские запросы и дающая им ответ.

а) веб-сервер передаёт данные в браузер в ответ на запрос браузера (см rfc. с описанием HTTP)

б) веб-серверу всё равно, кто послал запрос, лишь бы только этот запрос был.

2. клиент устанавливает соединение по нужному адресу на определённый порт (будем говорить о TCP), дальше он посылает какой-то запрос, сервер даёт ответ. Пока соединение не разорвано, сервер может по своей инициативе что-то передать.

Приложения могут общаться по сети. Одно предложение слушает порт, второе к нему присоединяется.

3. PHP - интерпретируемый язык программирования. Связка выглядит в виду двух правильно настроенных приложений: apache и PHP.

4. Или я вопрос не понял или я не знаю эту тему.

5. Если программа принимает и обрабатывает запросы, то она - сервер. Бессерверная технология (P2P, к примеру) подразумевает, что каждый одновременно является и клиентом и сервером, в зависимости от ситуации.

Link to comment
Share on other sites

  • 0

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

По четвертому пункту какие библиотеки не скажу, но мое руководство залипает частенько на биржах, так вот в эксель передаются данные с их вэбсервера через приложение на C# и с помощью каких-то библиотек.

Link to comment
Share on other sites

  • 0

// ________________________________________________

Int, огромное спасибо за ваш развёрнутый ответ!

1. Сервер - программа, обрабатывающая клиентские запросы и дающая им ответ.

а) веб-сервер передаёт данные в браузер в ответ на запрос браузера (см rfc. с описанием HTTP)

б) веб-серверу всё равно, кто послал запрос, лишь бы только этот запрос был.

Ясно. Стало понятнее. Большое спасибо!

2. клиент устанавливает соединение по нужному адресу на определённый порт (будем говорить о TCP), дальше он посылает какой-то запрос, сервер даёт ответ. Пока соединение не разорвано, сервер может по своей инициативе что-то передать.

Приложения могут общаться по сети. Одно предложение слушает порт, второе к нему присоединяется.

Сокеты... Ясно.

А что при этом должен иметь установленным у себя клиент? Тоже что-то вроде небольшого сервера?

3. PHP - интерпретируемый язык программирования. Связка выглядит в виде двух правильно настроенных приложений: apache и PHP.

Спасибо за ответ, но хотелось бы подробнее. Они работают в одном процессе, разными потоками? Или PHP - встраиваемая в Apache служба, на которую пересылаются пакеты для обработки? Можно ли на одном PHP написать, например, Messenger-чат?

4. Или я вопрос не понял или я не знаю эту тему.

Видимо, я плохо объяснился. Я имел в виду следующее.

У нас есть сервер-компьютер. На нём установлен, например, Apache+PHP+SQL. Мы хотим использовать эту связку из кода, например, написанного на C++. Как будет происходить общение между скомпилированным бинарником и сервером? Там возникает проблема синхронизации между процессами через ядро ОС. А это медленные cernel-команды!

Мне и стало интересно, есть ли готовые решения.

Судя по всему, ответ на этот вопрос дал arez:

4) Если я правильно понял вам копать в сторону OLE, DDE, COM.

за что ему тоже большое спасибо. Посмотрю обязательно!

5. Если программа принимает и обрабатывает запросы, то она - сервер. Бессерверная технология (P2P, к примеру) подразумевает, что каждый одновременно является и клиентом и сервером, в зависимости от ситуации.

Это ясно... Я не совсем это имел в виду. Я имел в виду не использовать Apache, и самому работать с сетевой платой... Уже понял, что тут сморозил глупость. Писать такую штуку - запариться можно! Буду исследовать Apache. Но в теме остаюсь. Уже видел, что люди писали свои сервера, почитаю про это.

Вообще, не знаю что делать с этой кашей в терминлогии. У нас есть сервер-"компьютер" (железяка в серверной), сервер-"ловец сообщений" (например, Apache) и сервер-"приложение" (наш код). Как правильно писать про них?

// ________________________________________________

По четвертому пункту какие библиотеки не скажу, но мое руководство залипает частенько на биржах, так вот в эксель передаются данные с их вэбсервера через приложение на C# и с помощью каких-то библиотек.

Спасибо за ответ, rus!

С C# всё очень просто. Там есть несколько способов работы с сетью. Есть готовый, встроенный в виртуальную машину сервер (!), и писать web-приложение можно с помощью классов Socket, общающихся с этим сервером. Также есть инструментарий для создания приложений SOAP (сервис-ориентированное програмирование).

Наверняка есть ещё что-нибудь хорошее и удобное, C# весь такой, но если выбирать его, то и само приложение придётся писать на этом языке. А он имеет ряд минусов:

1. Требует виртуальной машины.

2. В следствие первого пункта интерпретируется, что понижает скорость выполнения кода.

3. Так как приложения, которые собираюсь писать, должны быть хорошо оптимизированными и кроссплатформенными. C# не годится по пункту 1 – linux не дружит с C# (точнее, наоборот!).

4. Нет прямого контроля памяти – есть автоматический мусорщик. Меня всегда это смущало: деструкторы мутить не удобно и вообще. Костыль. Action Script 3 юзаю только потому, что там удобно с графикой работать. Java потому, что популярно. C# потому, что быстро. Но везде есть «потому, что».

5. Да, вы догадались, я просто с предубеждением отношусь к этому языку и компании-автору...

А я решил, что сессия закончилась уже...

Кончилась-кончилась! Просто подумал за каникулы разобраться в теме. Для себя.

// ===========================================

Ещё раз – всем огромное спасибо! Буду копать дальше, и, если найду, обязательно буду выкладывать сюда что-нибудь интересное!

Edited by semenyakinVS
Link to comment
Share on other sites

  • 0
А что при этом должен иметь установленным у себя клиент? Тоже что-то вроде небольшого сервера?
Нет, клиентская часть в состоянии принимать ответы сервера. Я как-то делал что-то типа чата в c builder, так там вообще всё интуитивно понятно было, одна программа слушала порт, другая подключалась, дальше происходил обмен. Пришло сообщение - вызвалось событие, обработал его.
Спасибо за ответ, но хотелось бы подробнее. Они работают в одном процессе, разными потоками? Или PHP - встраиваемая в Apache служба, на которую пересылаются пакеты для обработки? Можно ли на одном PHP написать, например, Messenger-чат?
Я так скажу, на php даже web-сервер написали, так что чат - не проблема :) И вроде даже gtk к php прикрутить можно чтобы гуй был. Но если нужна только серверная часть, без клиентской, то фигня-вопрос, запустить php в вечный цикл, убрать ограничение на время работы скрипта и в этом цикле слушать какой-нибудь порт (http тут вообще не нужен тогда). Но проще поставить IRC-сервер :)

Работают они в зависимости от настроек. Если php подключен как cgi, то будет отдельный процесс, который можно прибить в случае чего. Если он подключен модулем апача, то всё понятно из названия.

Как будет происходить общение между скомпилированным бинарником и сервером?
Если имеется в виду обмен данными, то можно и через те же сокеты на локалхост:80, а если нужно отправить данные из вашей программы некоторому клиенту, который подключился к веб-серверу, то наверное нужно апачу модуль писать или эту вашу программу как cgi подключать... Я в этой области не силён
не использовать Apache
Да, написать свой веб-сервер - это не хухры-мухры. Банальный ответ на GET / HTTP/1.0 для работы со статичными страничками - это, конечно, не проблема, а вот что-то серьёзное у одного человека может занять и годы.
Link to comment
Share on other sites

  • 0

Int, ещё раз спасибо!

Нет, клиентская часть в состоянии принимать ответы сервера. Я как-то делал что-то типа чата в c builder, так там вообще всё интуитивно понятно было, одна программа слушала порт, другая подключалась, дальше происходил обмен. Пришло сообщение - вызвалось событие, обработал его.

Понятно... Надо будет посмотреть.

Я так скажу, на php даже web-сервер написали, так что чат - не проблема :) И вроде даже gtk к php прикрутить можно чтобы гуй был. Но если нужна только серверная часть, без клиентской, то фигня-вопрос, запустить php в вечный цикл, убрать ограничение на время работы скрипта и в этом цикле слушать какой-нибудь порт (http тут вообще не нужен тогда). Но проще поставить IRC-сервер :)

Работают они в зависимости от настроек. Если php подключен как cgi, то будет отдельный процесс, который можно прибить в случае чего. Если он подключен модулем апача, то всё понятно из названия.

IRC-сервер... Посмотрю. Спасибо за информацию.

Если имеется в виду обмен данными, то можно и через те же сокеты на локалхост:80, а если нужно отправить данные из вашей программы некоторому клиенту, который подключился к веб-серверу, то наверное нужно апачу модуль писать или эту вашу программу как cgi подключать... Я в этой области не силён

Про cgi почитаю... Эх... Как много ещё читать!

Да, написать свой веб-сервер - это не хухры-мухры. Банальный ответ на GET / HTTP/1.0 для работы со статичными страничками - это, конечно, не проблема, а вот что-то серьёзное у одного человека может занять и годы.

Тут я немного искал информацию... Для моей цели - а мне всё это нужно для игры, интересуюсь созданием игрового сервера - как оказалось, нужны библиотеки работы с сетью. Один знакомый сказал, что в таком случаи Apache вообще не нужен.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy