Вопросы по сокетам., Чтение/Запись в сокет.. |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы по сокетам., Чтение/Запись в сокет.. |
defnull |
18.5.2008, 19:19
Сообщение
#1
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Добрый день.
Имеется сервер, при подключении к которому клиента создаётся поток, который обрабатывает некоторые данные полученные от клиента, при этом информируя клиента о ходе выполнения. Требуется сделать так чтобы клиент мог влиять на ход выполнения. Проблема для меня заключается в том что я не совсем понимаю можно ли одновременно и читать и писать в сокет. Если я запишу информацию в сокет (клиент), что я получу при попытке прочитать от-туда (тотже клиент)? данные которые мне возможно отправил сервер или то что я отправил?? Иными словами является ли сокет своеобразным общим буфером, или сокет это эдакий двунаправленный буфер? Естественно всё это можно было бы проверить на практике, но хотелось бы понять, прежде чем бежать набивать шишки. Заранее спасибо. |
|
|
Litkevich Yuriy |
18.5.2008, 23:41
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я с сетевыми вещами не знаком, но в руководстве Модуль QtNetwork
написано что "QTcpSocket работает асинхронно...", читай руководство. |
|
|
ViGOur |
19.5.2008, 7:52
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Буферы разные, для отправки и приема. Так что можешь писать.
|
|
|
Litkevich Yuriy |
19.5.2008, 8:18
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
defnull |
20.5.2008, 15:54
Сообщение
#5
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Спасибо!!!=) Логикой понимал, но лучше знать наверняка, чем потом переделывать...
|
|
|
flankerr |
30.5.2008, 14:37
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
работает асинхронно... Буферы разные, для отправки и приема. Для меня эти высказывания стали синонимами, и я думаю, это справедливо для любых коммуникационных систем. Может коечно чего не допонмаю но с какго перепуга это синонимы ??? Это я к вопросу о потоках... Синхронный сокет блокирует выполнение основного потока, а асинхронный - нет и работает в отдельном потоке. |
|
|
Litkevich Yuriy |
30.5.2008, 14:52
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
под асинхронностью я понимаю возможность одновременной работы приемника и передатчика, а под синхронной только поочередно.
И помоему в этом плане ничего не изменяется при наличии потокв/прерываний |
|
|
flankerr |
30.5.2008, 15:00
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
под асинхронностью я понимаю возможность одновременной работы приемника и передатчика, а под синхронной только поочередно. И помоему в этом плане ничего не изменяется при наличии потокв/прерываний Как ты это понимаешь я понял - извини за туфтологию. И это называетя НЕ синхронизацией а Фуллдуплекс (одновременно в обе стороны) или полудуплекс(или туда или сюда). А вот синхоранизация это всёже блокировка вызывающего потока. |
|
|
ViGOur |
30.5.2008, 15:02
Сообщение
#9
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
Litkevich Yuriy |
30.5.2008, 15:09
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну применительно к сокетам, видимо да, я с ними не работал.
Просто когда у тебя нет понятия поток, а есть прервание, т.е. ты работаешь на низком уровне, то это назвается так как я написал, например при работе с COM-портами. |
|
|
Текстовая версия | Сейчас: 26.12.2024, 23:54 |