Привет, коллеги-программисты.Включить поток в аргумент функции для использования Telnet и Ncurses
Я разрабатываю программу C/C++ с сокетами, которые должны подключаться к серверу через Telnet.
Для отправки текстовых и ANSI коды на удаленный терминал Telnet Я использую эту несильно:
void writeline(int socketfd, string line)
{
string tosend = line + "\n";
write(socketfd, tosend.c_str(), tosend.length());
}
Есть ли способ, чтобы создать объект потока как соиЬ, сегг, забивают или даже FILE (от C), который отправляет все, что попадает в функцию?
Например:
clientout << "Hello World";
назвали бы что-то вроде этого:
writeline(clientout.str()); //or alike
я сделал что-то вроде этого в прошлом году, когда я запрограммирован микропроцессор (с АВР) и перенаправлен стандартный вывод в функцию который отправил все в соединение USART. Я надеялся, что смогу сделать что-то подобное.
Это, как я это сделал, то:
static int usart_putchar(char c, FILE *stream)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = c;
return 0;
}
static FILE usart_stream = FDEV_SETUP_STREAM(usart_putchar, NULL, _FDEV_SETUP_WRITE);
int main()
{
//(...)
stdout = &usart_stream;
//(...)
}
Я заинтересован в этом, потому что, помимо того, что простой способ печати на удаленный терминал, мне нужен поток для даже думать об использовании Ncurses с моя программа. Чтобы использовать его, мне нужна функция this, для которой нужен поток для ввода, а другой для вывода.
Приносим извинения за длительный вопрос. Спасибо заранее.
я вижу. Есть ли способ получить «ФАЙЛ» из «streabuf»? Это просто, что ncurses не создан для C++. Определение функции: «SCREEN * newterm (char * type, FILE * outfd, FILE * infd)». Спасибо. –
Я проверил все защищенные виртуальные функции в streambuf, но не мог понять, как имплементировать то, что вы сказали. http://www.cplusplus.com/reference/streambuf/streambuf/ Не могли бы вы рассказать мне, как я могу это сделать? –
'FILE' - это C, а не C++. Вы не можете каким-либо образом привязать указатель C 'FILE' к C++' std :: streambuf'. Что касается подкласса 'std :: streambuf', то я боюсь, что для написания учебника для подкласса' std :: streambuf' потребуется более 500 символов, которые могут войти в комментарий stackoverflow.com. –