#c #sockets #ioctl
#c #сокеты #ioctl
Вопрос:
Я использую ioctl() для считывания количества символов в моем буфере в программе сокета. Однако иногда, когда заполнение буфера задерживается, ioctl() неверно интерпретирует его как конец сообщения. Как этого можно избежать, если бы я использовал ioctl(), чтобы узнать длину моего входящего сообщения. Также я не знаю размер сообщения, которое я получу, следовательно, я не смогу получить его в статическом буфере recv() .
Спасибо, Manoj
Комментарии:
1. Используете ли вы потоки или дейтаграммы в своих сокетах?
Ответ №1:
Сделайте размер сообщения частью сообщения, предпочтительно в начальных байтах. ie делает первые 2 байта размером остальной части сообщения. Таким образом, вы знаете, что вам нужно подождать, пока не будут прочитаны 2 прочитанных байта, а затем прочитать размер сообщения.