crossplatform.ru

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

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


Студент
*

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

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




Репутация:   1  


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

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

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


Участник
**

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

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




Репутация:   6  


Цитата(blondinka @ 24.4.2009, 17:19) *
Если 2 копии программы и запускаются с разных компов, да и даже с одного компа, то в это классе будет всего 1 запись. Это существующее соединение. 1 копия клиента - 1 запуск - 1 соединение. Когда я втроой раз запущу программу, то пользователь введет логин и пароль и этот класс не будет знать,запущена ли еще какая-нибудь копия этой программы или нет

Та же аналогия с аськой. Ты когда клиента запускаешь, то этот клиент не знает сколько его копий запущено и с какими логинами.


Прочитал все посты, не понял, прочитал еще раз, опять не понял :) Ты напиши что ты хочешь сделать конкретно...

Вообще если нужно, чтобы под одним логином и паролем двое не зашли, то в твоей базе логинов и паролей нужно завести поле АКТИВЕН и проверять его.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Авварон_*
сообщение 26.4.2009, 8:48
Сообщение #3





Гости








    


Цитата(Andrew Selivanov @ 24.4.2009, 17:03) *
Цитата(blondinka @ 24.4.2009, 17:19) *
Если 2 копии программы и запускаются с разных компов, да и даже с одного компа, то в это классе будет всего 1 запись. Это существующее соединение. 1 копия клиента - 1 запуск - 1 соединение. Когда я втроой раз запущу программу, то пользователь введет логин и пароль и этот класс не будет знать,запущена ли еще какая-нибудь копия этой программы или нет

Та же аналогия с аськой. Ты когда клиента запускаешь, то этот клиент не знает сколько его копий запущено и с какими логинами.


Прочитал все посты, не понял, прочитал еще раз, опять не понял :) Ты напиши что ты хочешь сделать конкретно...

Вообще если нужно, чтобы под одним логином и паролем двое не зашли, то в твоей базе логинов и паролей нужно завести поле АКТИВЕН и проверять его.


я к сожалению не работал с qtшными сокетами, но юзал sys/socket. Так вот при коннекте к серверу никакая авторизация не требуется - сервер сделает accept() в любом случае, если к нему делают connect() В слычае аськи, после соединеия передаются логин/пароль, сервер сверяет и высылает спец сообщение о том можно подключиться или нет. Возможно сервер принимает 1 подключение вообще? Тогда да, он зависнет до тех пор, пока управление не попадет к ф-ии accept() типа for(;;){ accept; read/write; close(); } Но так обычно никто не делает - либо 2 потока - для акссепта/передачи данных, либо 1 через ф-ию select(). Хотелось бы увидеть код сервера, отвечающий за соединение, туда нужно как раз вставить посылку служебного сообщения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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


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


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




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