Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не большой вопрос по протоколу TCP и клиент-серверному приложению
Форумы портала PHP.SU » » Вопросы по Perl/Python/.NET » Не большой вопрос по протоколу TCP и клиент-серверному приложению

Страниц (1): [1]
 

1. Инсеин - 10 Сентября, 2013 - 23:27:11 - перейти к сообщению
Всем доброе время суток!

Начнем, пожалуй, с не большого предисловия…

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

Теперь ближе к делу…

Появилась необходимость сделать простенький клиент к части сайта, то бишь на сайте есть страница с несколькими кнопками (конечно же, для зарегистрированных пользователей), так вот эту часть и надо вынести в клиент, чтобы работать можно было, не открывая браузер. Сразу оговорюсь, что использовать элемент WebBrowser не вариант.
Что касается клиента, то при запуске программы, происходит соединение с сервером, проверка наличия обновлений (чего на самом деле ещё долго не будет), затем авторизация и уже сам запуск клиента. Клиент – это не большое окно с несколькими кнопками, клик по каждой открывает своё окно. Большую часть времени клиент просто находится в режиме запуска и если для пользователя есть новое сообщение или какая-то новая информация, он должен получить её. Вот собственно и весь клиент.

И наконец-то вопрос…

И занялся, я значит изучением написания клиент-серверных приложений и протокола TCP (ранее работать приходилось только с HTTP). И во всех материалах, статьях и примерах, что мне попадались… Твердили, что необходимо указывать максимальное количество одновременных соединений, их конечно можно не указать, но тогда велики шансы, что сервер может, не справится (а это уже плохо). Тогда получается (в моём случае), надо указать это самое количество, но чтобы (если вдруг окажется, что клиентов много) не приходилось лишним ожидать, после каждого запроса надо разрывать соединение. А чтобы клиент вовремя получал уведомления, просто вешаем таймер, который будет отправлять через n-ое количество секунд (минут), запрос на сервер. И вот когда я дошёл до подобных умозаключений, я задался вопросом «в чём же тогда разница между TCP и HTTP протоколами?!», ведь, по сути, у меня получается то же самое, что и обычная web-страница с ajax-запросами. И достаточно просто закинуть на хост парочку PHP-скриптов, что будут отвечать на запросы и всё. Но если это так, то, наверное, я, что-то не понял. Улыбка

Собственно вопрос в том, где мои мысли пошли не в том направлении и куда их всё же стоит направить? Улыбка Какой всё же подход будет более правильным в данном конкретном случае? И как всё же пишут клиент-сервер с постоянным соединением и без ограничения одновременных подключений?

P.S.: Я наверное слегка слукавил, когда в названии тему написал «не большой вопрос» и спасибо всем кто осилил сей вопрос и дочитал до конца.
2. esterio - 11 Сентября, 2013 - 00:48:51 - перейти к сообщению
пишу с телефона потому текста мало.

tcp как и udp транспортный уровень. и он ничем не похож на http. его задача совсем другая.
а по сабжу: юзайте вебсокеты. если в вебе лучше разбираетесь - то и делайте в нем
3. caballero - 11 Сентября, 2013 - 01:09:49 - перейти к сообщению
Цитата:
в чём же тогда разница между TCP и HTTP протоколами

Это протоколы разного уровня.
HTTP работает поверх TCP и не имеет постоянного соединеия.

Цитата:
то бишь на сайте есть страница с несколькими кнопками (конечно же, для зарегистрированных пользователей), так вот эту часть и надо вынести в клиент,

шо значит вынести? Что именно вынести? Куcок HTML ?

Цитата:
что использовать элемент WebBrowser не вариант.

если речь идет о части сайта то других вариантов кроме браузера и нет.
Разве что curl.

потрудитесь навести порядок в своих мыслях и сформулиролвать вопрос технически более четко и без бла-бла-бла
4. esterio - 11 Сентября, 2013 - 09:31:23 - перейти к сообщению
http://ru[dot]wikipedia[dot]org/wiki/TCP
Цитата:
один из основных протоколов передачи данных Интернета, предназначенный для управления передачей данных в сетях и подсетях TCP/IP.
Выполняет функции протокола транспортного уровня модели OSI.
Существует набор служб (использующих для передачи данных TCP), за которыми закреплены определенные порты:

20/21 — FTP
22 — SSH
23 — Telnet
25 — SMTP
80 — HTTP
110 — POP3
194 — IRC (Internet Relay Chat)
443 — HTTPS (Secure HTTP)
1863 — MSN Messenger
2000 — Cisco SCCP (VoIP)
3389 — RDP
8080 — альтернативный порт HTTP

http://ru[dot]wikipedia[dot]org/wiki/HTTP
Цитата:
протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.



Думаю далее не стоит копипастить. Вы уже сами можете взглянуть на модель OSI
5. Zuldek - 11 Сентября, 2013 - 10:11:53 - перейти к сообщению
1. В мыслях и идеях каша.

Почему? - Потому что начинать изучения сайтостроения как раз и нужно было не с сайтостроения а стека протоколов TCP/IP, и HTTP и 90% вопросов решились бы сами собой.

2. В контексте озвученных задач не понятно почему вы не можете использовать в качестве клиента приложение js исполняемое в браузере. Запросы к серверу, обновление баз, хранение баз данных на таком клиенте, — сегодня все это вполне возможно и практикуется (web storage и т.п.).

3. Что касается технологий разработки клиента, если все же указанное выше решение окажется для вас не подходящим, то к выбору нужно подходить с позиции целесообразности. Если вы разрабатываете мультиплатформенное клиентское приложение (ещё один + для варианта из пункта 2) для ПК и других платформ на никсовых операционных системах, то использование C# тут будет нецелесообразным в том случае, если задействование всей мощи NET вам не требуется. Тем не менее, вести на данном языке разработку под никсоандроиды и даже IOS вполне возможно, равно как и разрабатывать мульти-платформенные приложения, разумеется, с использованием специальных надстроек (http://xamarin[dot]com/monoforandroid ). Но это не ваш случай. Питон, либо, ещё проще, — php + Devil Studio (или иная прокладка) могут стать более простой с позиции трудозатрат платформой для вашего клиента, насколько о нем можно судить из столь скупого запроса функционала.
6. Инсеин - 17 Сентября, 2013 - 03:40:46 - перейти к сообщению
caballero пишет:
шо значит вынести? Что именно вынести? Куcок HTML ?

Если бы необходимость была именно в этом, то я бы и воспользовался бы WebBrowser и никаких проблем, но я видимо не совсем корректно написал Недовольство, огорчение Мне надо было повторить визуально в клиенте, часть что есть на сайте. Почему именно так? Просто, учитывая некоторые нюансы о которых я не написал, я решил, что так будет проще.

esterio, спасибо, но я догадался прочитать описание, до того как создать эту тему. Да и вопрос был не в этом, а в том что на деле у меня получалось, что надо закрывать соединение, что в свою очередь уже никак не получалось "постоянным". Улыбка Хотя в целом я уже нашёл подходящий пример и вопрос как бы решён.

Zuldek, огромное спасибо за ваш ответ.
7. JustUserR - 17 Сентября, 2013 - 16:18:33 - перейти к сообщению
Инсеин пишет:
Мне надо было повторить визуально в клиенте, часть что есть на сайте. Почему именно так? Просто, учитывая некоторые нюансы о которых я не написал, я решил, что так будет проще.
Предполагаемое решение поставленной задачи, заключающейся в осуществлении формировании элементов пользовательского интерфейса целевого приложения, являющегося эквивалентным или обеспечивающим сопоставление требуемых объектов с визуальных позиций, при условии отсутствия применения общих определений объектов интерфейса, с точки модельных составляющих в первичном повышенном уровне базового элементного трактования, не является самым оптимальным решением, поскольку требует формирование общих модельных составляющих для дифференцированных активных действенных составляющих, определяемых во вторичном пониженном уровне базовой элементной трактовки, в соответствии с чем предполагаемым оптимальным решением может являеться фомирования приложения, соединение модельной и физической составляющей которого является идеологически эквивалентнрым решению, построенному на базе применение объекта WebBrowser, наследующего из активной среды исполнения .net framework, однако осуществление перевода HTML-элементов во вторичный пониженный уровень базвого элементного трактования осуществляется не директивным непосредственным методом, а производится на основании предшествующего анализа входящих HTML-информационных полей, представленных в первичном пониженном уровне базового элементного трактования, и выполнения ассоциированных функциональных составлюящих, включающих сопоставление физических образов для предполагаемой визуальной модели, которые в частности в условиях использования технологии HTA, могут быть непосредственно преоразованы в ассоциированные объекты верхнего уровня с точки хрения модельной составляющей, в то время как функционального целевого приложения, в области делегируемых привелений, является эквивалентной настольном классическому программному обеспечению

 

Powered by ExBB FM 1.0 RC1