URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2910
[ Назад ]

Исходное сообщение
"клиент принимает обе строки как одну"

Отправлено zzz , 09-Май-04 08:46 
хочу сделать чтобы сервер посылал одну строку, затем другую.
клиент ждёт строку, обрабатывает её, затем ждёт другую.
на деле получается что клиент принимает обе строки как одну. где грабли?

Содержание

Сообщения в этом обсуждении
"клиент принимает обе строки как одну"
Отправлено Seri , 10-Май-04 20:19 
>хочу сделать чтобы сервер посылал одну строку, затем другую.
>клиент ждёт строку, обрабатывает её, затем ждёт другую.
>на деле получается что клиент принимает обе строки как одну. где грабли?
>

Посылай разделитель строк


"клиент принимает обе строки как одну"
Отправлено Maxim Y. Moroz , 12-Май-04 04:59 
>хочу сделать чтобы сервер посылал одну строку, затем другую.
>клиент ждёт строку, обрабатывает её, затем ждёт другую.
>на деле получается что клиент принимает обе строки как одну. где грабли?
>


Похоже, ты используешь TCP соединение.
В таком случае обе строки могут прийти одним пакетом.
Или четырьмя. Так что на клиенте тебе в любом случае надо из потока байтов собирать строки.
Или используй UDP. Правда, тогда придется учитывать вероятность потерь.


"клиент принимает обе строки как одну"
Отправлено alexora , 18-Май-04 07:06 
>>хочу сделать чтобы сервер посылал одну строку, затем другую.
>>клиент ждёт строку, обрабатывает её, затем ждёт другую.
>>на деле получается что клиент принимает обе строки как одну. где грабли?

считуй побайтно до тех пор пока не столкнешься с \r \n



"клиент принимает обе строки как одну"
Отправлено Alexander S. Salieff , 19-Май-04 17:37 
>хочу сделать чтобы сервер посылал одну строку, затем другую.
>клиент ждёт строку, обрабатывает её, затем ждёт другую.
>на деле получается что клиент принимает обе строки как одну. где грабли?
>

Тут много насоветовали, но вообще, если так уж вперлась именно принципиально построчная передача, то ботай termios и иже с ним, там можно с дескрипторами играцца, эхо, типы приема-передачи (включая посторочную), управление буферизацией, и много еще чего. Или прямо через fcntl.
Если попроще, можно поюзать getline, или его производные из iostream, если есть надобность.