Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
#1

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

13.09.2011, 17:49. Просмотров 1855. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Асинхронный ввод с клавиатуры (C++):

асинхронный ввод/вывод - C++
задача состоит в том,что нужно умножить две матрицы размера n на n которые хранятся во внешней памяти и результат соответственно записать...

Как правильно заменить ввод данных простой на ввод с клавиатуры? - C++
#include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) ...

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

Ввод с клавиатуры - C++
Помогите пожалуйста переделать программу, чтобы значения n - вводилось с клавиатуры и определяло количество елементов Х и У( по...

Ввод с клавиатуры - C++
Напишите программу, которая будет читать целое число от ввода с клавиатуры и печатать последнюю цифру данного числа. (8. Write a program...

Ввод с клавиатуры - C++
Столкнулся с проблемой, что не получается переделать считывание текста из файла на ввод с клавиатуры. Помогите пожалуйста. #include...

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

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

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

Теперь проблема, как прочитать определенную строку из консоли?
0
Mustik
56 / 56 / 2
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Ввод данных с клавиатуры - C++
1.«Тестирование коллектива». Пусть целочисленная матрица размером п х т содержит информацию об учениках некоторого класса из п человек. В...

Палиндром ввод с клавиатуры - C++
Доброго времени суток:) Напишите программу,которая читает пятизначные целые и определяет,являются ли они палиндромами(пример палиндрома...

Ввод функции с клавиатуры - C++
Здравствуйте. Необходима помощь в написании программы на С. Программа поиска минимума и максимума функции методом кого-то. С методом может...


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

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

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