crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Вопросы по сокетам., Чтение/Запись в сокет..
defnull
  опции профиля:
сообщение 18.5.2008, 19:19
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 1.5.2008
Пользователь №: 165

Спасибо сказали: 0 раз(а)




Репутация:   1  


Добрый день.
Имеется сервер, при подключении к которому клиента создаётся поток, который обрабатывает некоторые данные полученные от клиента, при этом информируя клиента о ходе выполнения. Требуется сделать так чтобы клиент мог влиять на ход выполнения.

Проблема для меня заключается в том что я не совсем понимаю можно ли одновременно и читать и писать в сокет. Если я запишу информацию в сокет (клиент), что я получу при попытке прочитать от-туда (тотже клиент)? данные которые мне возможно отправил сервер или то что я отправил?? Иными словами является ли сокет своеобразным общим буфером, или сокет это эдакий двунаправленный буфер?

Естественно всё это можно было бы проверить на практике, но хотелось бы понять, прежде чем бежать набивать шишки. Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
blondinka
  опции профиля:
сообщение 26.4.2009, 17:44
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


Аналогию с аськой проводила для того, чтобы показать, что вариант с классом менеджер подключений мне не подойдет.
Сервер писала тоже я, и могу сказать, что у меня авторизация требуется и accept() делается только для первого подключения, а второе висит в сокете до тех пор, пока первый не закроет свое подключение, тогда для второго делает accept() (сервер работает на селекте), т.е. сразу после accept в select уже передается дескриптор клиента и соответственно он работает уже с этим подключением. В Qt , как я поняла, определяется connect или нет, только по совпадению адреса сервера и порта.
Мне как разне нужно,чтобы двое заходили..Мне нужно:
Если это втрое или n-ное подключение, то опеделить это, т.е сотояние сокета, сделал ли мне сервер accept() (и принимает мои пакеты, и отвечае мне) или же это соединение висит в очереди ожидающих подключение. Сервер вообще трогать не надо..Надо в клиенте определить сделал ли мне сервер accept или нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 27.4.2009, 21:33
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 99
Регистрация: 26.4.2009
Пользователь №: 709

Спасибо сказали: 14 раз(а)




Репутация:   0  


Цитата(blondinka @ 26.4.2009, 18:44) *
Аналогию с аськой проводила для того, чтобы показать, что вариант с классом менеджер подключений мне не подойдет.
Сервер писала тоже я, и могу сказать, что у меня авторизация требуется и accept() делается только для первого подключения, а второе висит в сокете до тех пор, пока первый не закроет свое подключение, тогда для второго делает accept() (сервер работает на селекте), т.е. сразу после accept в select уже передается дескриптор клиента и соответственно он работает уже с этим подключением. В Qt , как я поняла, определяется connect или нет, только по совпадению адреса сервера и порта.
Мне как разне нужно,чтобы двое заходили..Мне нужно:
Если это втрое или n-ное подключение, то опеделить это, т.е сотояние сокета, сделал ли мне сервер accept() (и принимает мои пакеты, и отвечае мне) или же это соединение висит в очереди ожидающих подключение. Сервер вообще трогать не надо..Надо в клиенте определить сделал ли мне сервер accept или нет.

менеджер подключений О_о в сервере: "accept() if(bool) close; else {bool = true; рабочий цикл; close; bool=false;}"
к серверу невозможно сделать 2 подключения, если он не хочет делать accept() в чем вообще проблема изменить чуть-чуть сервер? собственно accept и нужен для того, чтобы сервер мог установить соединение и передать отказ "лишнему" клиенту.
если настолько в лом переделывать сервер - делай тайм аут. если не ошибаюсь, то вызов connect блокирует приложение => до коннекта пускаем таймер по истечении которого, если мы не прошли коннект, рубим клиента
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- defnull   Вопросы по сокетам.   18.5.2008, 19:19
- - Litkevich Yuriy   Я с сетевыми вещами не знаком, но в руководстве Мо...   18.5.2008, 23:41
- - ViGOur   Буферы разные, для отправки и приема. Так что може...   19.5.2008, 7:52
- - Litkevich Yuriy   Цитата(Litkevich Yuriy @ 19.5.2008, 3:41)...   19.5.2008, 8:18
|- - flankerr   Цитата(Litkevich Yuriy @ 19.5.2008, 9:18)...   30.5.2008, 14:37
- - defnull   Спасибо!!!=) Логикой понимал, но лучше...   20.5.2008, 15:54
- - Litkevich Yuriy   под асинхронностью я понимаю возможность одновреме...   30.5.2008, 14:52
|- - flankerr   Цитата(Litkevich Yuriy @ 30.5.2008, 15:52...   30.5.2008, 15:00
- - ViGOur   Цитата(flankerr @ 30.5.2008, 16:00) А вот...   30.5.2008, 15:02
- - Litkevich Yuriy   ну применительно к сокетам, видимо да, я с ними не...   30.5.2008, 15:09
- - blondinka   Здравствуйте, у меня вопрос по сокету...Может знае...   24.4.2009, 15:01
- - ViGOur   Можно, написав класс менеджер подключений, в котор...   24.4.2009, 15:26
- - blondinka   Если я запустила ону копию программы-клиента на од...   24.4.2009, 15:31
- - ViGOur   Почему не будет? Все подключения будут проходит че...   24.4.2009, 15:38
- - blondinka   Есть tcp-сервер, который находтся на линуксовой ма...   24.4.2009, 15:51
- - ViGOur   Если имя пользователя уникальное, то все также, ка...   24.4.2009, 16:04
- - blondinka   Если 2 копии программы и запускаются с разных комп...   24.4.2009, 16:19
- - Andrew Selivanov   Цитата(blondinka @ 24.4.2009, 17:19) Если...   24.4.2009, 17:03
|- - Авварон   Цитата(Andrew Selivanov @ 24.4.2009, 17:0...   26.4.2009, 8:48
- - blondinka   Аналогию с аськой проводила для того, чтобы показа...   26.4.2009, 17:44
|- - Авварон   Цитата(blondinka @ 26.4.2009, 18:44) Анал...   27.4.2009, 21:33
- - blondinka   Сервер хочет делать accept, но не видит второго по...   28.4.2009, 9:32
- - ViGOur   Глянь: QAbstractSocket::SocketState. Пойдет?   28.4.2009, 10:30
- - blondinka   Угу, видела) Только не могу найти что значит Liste...   28.4.2009, 13:10
|- - fsMark   Цитата(blondinka @ 28.4.2009, 14:10) Угу,...   28.4.2009, 14:02
- - blondinka   Ясно, значит, это тоже относится к серверу и не по...   28.4.2009, 14:10
- - ViGOur   Как я понял, для твоего клиента тебе нужно проверя...   28.4.2009, 14:50
- - blondinka   В том-то и дело, что он посылает сигнал connected(...   28.4.2009, 15:43


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 16:24