Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
1

Асинхронный ввод с клавиатуры

13.09.2011, 17:49. Просмотров 2063. Ответов 11

Доброго времени суток. Имеется клиент named pipes реализованный в консоли. Сервер время от времени шлет сообщения этому клиенту, ввод и отправка сообщений серверу от клиента тоже присутствует. Нужно сделать так, чтобы при вводе сообщения в окне клиента, клиент принимал и отображал сообщения от сервера.
В данный момент использую std::wcin.getline(буфер,sizeof(буфер)). Функция отличная, но до нажатия Enter принятые от сервера сообщения "курят" в очереди.
Не могли бы сдвинуть меня на верный путь?

Добавлено через 4 минуты
Может быть вариант с отдельным потоком для клавиатуры? Отпустит ли cin.getline меня на обработку другого потока?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 17:49
Ответы с готовыми решениями:

асинхронный ввод/вывод
задача состоит в том,что нужно умножить две матрицы размера n на n которые...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг)...

Как правильно заменить ввод данных простой на ввод с клавиатуры?
#include "stdafx.h" #include <cstdlib> #include <iostream> using namespace...

Переделать ввод из файла на ввод с клавиатуры
void openfile(int**a) { std::ifstream file("input.txt",...

ввод с клавиатуры
помогите, пожалуйста, сделать ввод с клавиатуры: #include<iostream>...

11
accept
4833 / 3255 / 456
Регистрация: 10.12.2008
Сообщений: 10,569
14.09.2011, 04:13 2
Цитата Сообщение от Mustik
Отпустит ли cin.getline меня на обработку другого потока?
получи управление консолью
win - msdn
lin - termios
1
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
14.09.2011, 09:43  [ТС] 3
Цитата Сообщение от accept Посмотреть сообщение
получи управление консолью
win - msdn
lin - termios
Немного не понял. Можете по-подробнее рассказать?
0
accept
4833 / 3255 / 456
Регистрация: 10.12.2008
Сообщений: 10,569
14.09.2011, 11:23 4
оставление курсора
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
14.09.2011, 13:01  [ТС] 5
Цитата Сообщение от accept Посмотреть сообщение
оставление курсора
Так, это уже хорошо. Спасибо.
Но все-равно не понятно, как реализовать параллельно ввод с клавиатуры и отображение принятого сообщения. Точнее, проблема в том, что wcin.getline адекватно работает с клавишами backspace, enter, esc, можно побегать по набранной строке курсором и удалить ненужные символы, а вот если работать с посимвольным вводом (например, _getwche()), то все возможности нужно реализовывать в ручную, что ни есть хорошо.
Еще не пробовал, как ведет себя wcin.getline в отдельном потоке, думаю, вопросов еще больше будет
0
accept
4833 / 3255 / 456
Регистрация: 10.12.2008
Сообщений: 10,569
15.09.2011, 01:51 6
Цитата Сообщение от Mustik
Но все-равно не понятно, как реализовать параллельно ввод с клавиатуры и отображение принятого сообщения.
вот средства:
msdn. запись в консоль
msdn. чтение из консоли
там слева посмотришь функции управления курсором

Цитата Сообщение от Mustik
а вот если работать с посимвольным вводом (например, _getwche())
для начала нужно попробовать просто одновременный ввод и вывод
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
15.09.2011, 10:40  [ТС] 7
Спасибо, мысли хорошая. Хреновато умею пользоваться поиском MSDN
0
accept
4833 / 3255 / 456
Регистрация: 10.12.2008
Сообщений: 10,569
15.09.2011, 10:48 8
Цитата Сообщение от Mustik
Хреновато умею пользоваться поиском MSDN
там у них организация навроде реестра уиндоус
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
20.09.2011, 17:34  [ТС] 9
Цитата Сообщение от accept Посмотреть сообщение
для начала нужно попробовать просто одновременный ввод и вывод
Не могли бы по-подробнее на эту тему? что вы имеете ввиду?
0
accept
4833 / 3255 / 456
Регистрация: 10.12.2008
Сообщений: 10,569
21.09.2011, 06:06 10
Цитата Сообщение от Mustik
Не могли бы по-подробнее на эту тему? что вы имеете ввиду?
в одну область выводятся сообщения, которые приходят
в другую область выводятся набираемые символы
переход между областями через gotoxy()
для каждой области делается отдельный поток
происходит переключение между потоками
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
21.09.2011, 14:23  [ТС] 11
Как очистить определенную строку в консоли?

Добавлено через 1 час 31 минуту
Цитата Сообщение от Mustik Посмотреть сообщение
Как очистить определенную строку в консоли?
Очистить получилось.

Теперь проблема, как прочитать определенную строку из консоли?
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
23.09.2011, 10:59  [ТС] 12
Так, у меня все получилось. ReadConsole работает кривовато, когда начинаешь вырезать строку, которую вводишь, и вставлять в другое место. Если начинаю вырезать, вставлять пустую строку, захватывает откуда-то с консоли хрень ввиде двух символов. Пришлось вернуться к своим std::wcin.getline(...,...).
А теперь возникла проблема, если я дохожу до последней строки консоли и продолжаю дальше принимать строки, то начинаются глюки. Получается, что мне нужно удлиннить консоль. Можно ли так сделать? Или удалять первые строки нужно?
0
23.09.2011, 10:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2011, 10:59

Ввод с клавиатуры
на С++ надо организовать ввод с клавиатуры, при этом я не знаю сколько...

Ввод с клавиатуры
Напишите программу, которая будет читать целое число от ввода с клавиатуры и...

Ввод с клавиатуры
Столкнулся с проблемой, что не получается переделать считывание текста из файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru