crossplatform.ru

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

> Получение текста через TCP сокет, Нахождение символа конца строкит ()
fsMark
  опции профиля:
сообщение 2.5.2008, 23:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

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




Репутация:   1  


Получаю данные QTcpServer`ом от удаленного telnet клиента, признак конца команды (насколько я понял из немногочисленной документатции) есть ничто иное как признак конца строки и перевод каретки (т.е. "\n\r").
Использую следующий код для получения команды целиком (она записывается в буфер)
    void myFtpServer::slotReadClient() 
        {
        QTcpSocket* pClientSocket = (QTcpSocket*)sender();
        QTextStream in(pClientSocket);  
        QString tmp;    
        tmp = "";
        in >> tmp;
        buffer = buffer + tmp;    
        if (buffer.indexOf("\n\r")!=(-1))
        {
        //здесь обработка команды
        buffer = "";
        };
        
        }

Такой код ничего хорошего не дает ((, возникает вопрос правильно ли я ищу признак конца строки и перевод каретки.. или может я неправ насчет того что передает telnet при нажатии enter`а? Кто сталкивался подскажите пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 3.5.2008, 22:03
Сообщение #2


Мастер
******

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

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




Репутация:   40  


Думаю стоит поработать над вариантом, что будет, если тебе прийдет пакет 1024 байт? Или 2048, или n байт?
Другими словами cчитывать то количество байт, которое пришло, а не то, под которое ты выделил память.

Читай до тех пор, пока функция read не вернет 0 байт, так как:
Цитата
0 is returned when no more data is available for reading.
Используй функцию read ( char * data, qint64 maxSize ). ;)

Сообщение отредактировал ViGOur - 3.5.2008, 22:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 20:46