Название: Основы работы с TCP/IP Отправлено: JamS007 от Январь 22, 2010, 21:52 Здравствуйте,
программирование сети изучаю несколько дней. До этого не был знаком ни с какими реализациями сетевого взаимодействия. Решил изучить Qt-способы, так как считаю эту библиотеку действительно хорошей. Но во всех книгах, которые я прочитал по Qt, способ изложения один и тот-же. Мало того, во всех примерах приводиться "Эхо сервер". Вот решил задать несколько вопросов людям более осведомленным в этой теме: 1. Бывают ли реализации клиент-серверных приложений, в которых клиент подключившись однажды постоянно работает и обмениваться информацией с сервером, и только по завершении работы отключается? 2. Можно ли как-то реализовать взаимосвязь между клиентом и сервером как между функциями в обычной программе, или слотами в Qt? 3. Можно ли передавать информацию в оба конца используя один и тот же соккет (то есть с сервера на клиент, и с клиента на сервер)? 3.1 Как правильно передавать информацию по TCP, особенно интересует проверка все ли пакеты дошли, а то из всех прочитанных примеров я так ничего и не понял. Просьба: не пинайте... Я тоже хочу знать основы работы с сетью. И еще... объясняйте, пожалуйста, максимально доходчиво. :-\ Название: Re: Основы работы с TCP/IP Отправлено: BRE от Январь 22, 2010, 22:46 1. Бывают ли реализации клиент-серверных приложений, в которых клиент подключившись однажды постоянно работает и обмениваться информацией с сервером, и только по завершении работы отключается? Такие приложения возможны, только нужно помнить, что сервер должен хранить информацию о всех подключениях, а это ресурсы, которые заканчиваются.2. Можно ли как-то реализовать взаимосвязь между клиентом и сервером как между функциями в обычной программе, или слотами в Qt? Подобные протоколы существуют, например XML-RPC.3. Можно ли передавать информацию в оба конца используя один и тот же соккет (то есть с сервера на клиент, и с клиента на сервер)? Да. 3.1 Как правильно передавать информацию по TCP, особенно интересует проверка все ли пакеты дошли, а то из всех прочитанных примеров я так ничего и не понял. Общение должно осуществляться по определенных правилам (протоколам). На определенные протоколы есть спецификации, но можно придумать и свой проток. Что бы определить, что пришли все данные, можно сначала отослать их длину, потом данные, вторая сторона зная длину, будет ждать получения полного пакета. Можно в конце данных передавать какую-то сигнатуру, по которой принимающая сторона определит, что пакет закончился. Много чего можно придумать. Посмотри спецификации на протоколы HTTP, FTP, ... Подумай... :) Название: Re: Основы работы с TCP/IP Отправлено: DS_tm от Январь 22, 2010, 22:58 Пока писал ответ BRE уже ответил! Повторяться не буду, вот на вики начальная инфа про протоколы (http://ru.wikipedia.org/wiki/Протоколы_передачи_данных).
На счет 2-ого пункта, имейте в виду, что какой бы не был проток, вы не сможете вызывать функции (и посылать сигналы) "напрямую" другой программе, протоколы по природе своей состоят из запроса и ответа, то есть явлаються асинхронными. Название: Re: Основы работы с TCP/IP Отправлено: BlackTass от Январь 23, 2010, 00:02 На счет 2-ого пункта, имейте в виду, что какой бы не был проток, вы не сможете вызывать функции (и посылать сигналы) "напрямую" другой программе, протоколы по природе своей состоят из запроса и ответа, то есть явлаються асинхронными. Теоретически это возможно (к данной теме конечно не относится, ибо чтобы реализовать подобное надо дофига опыта). Пишется обертка над сетью, которая вызывает методы в другой программе и возвращает результат их исполнения (в дотнете например такое есть)Название: Re: Основы работы с TCP/IP Отправлено: SABROG от Январь 23, 2010, 01:34 Был такой проект, vedga называется. Не знаю жив сейчас или нет. Суть в том, что сервер пишется также как и обычное Qt приложение, а вместо классов QPushButton и т.д. используются классы GPushButton. Сигналы соединяются со слотами и вообще всё как обычно. Пользователь запускает специальный клиент, который делает запрос к серверу написанному тоже на Qt. И создает интерфейс на основе этого ответа. Соответственно когда пользователь жмет кнопку на таком интерфейсе, то сигнал уходит по сети на сервер. Т.е. вся логика там.
Название: Re: Основы работы с TCP/IP Отправлено: niXman от Январь 23, 2010, 02:41 http://ru.wikipedia.org/wiki/Remote_Procedure_Call
? Название: Re: Основы работы с TCP/IP Отправлено: xokc от Январь 23, 2010, 23:33 qdbus позволяет организовать прозрачный обмен сигнал/слотами. Только вот под Windows он вроде через tcp/ip не работает. По крайней мере тут на форуме были посты, что с другими компами через dbus связаться не получилось.
|