Тогда так и надо было акцентировать внимание.
Не проблема. Сейчас подправлю...
Только ж, если сделаю защиту от переполнения, то Вы его не сможете вызвать
Итак, можно сделать так:
Вариант I:
1) в приеме имеем фиксированный буфер
2) принимаем сообщение, ограничивая длиной буфера (пусть 200 байт)
3) копируем в буфер, размер которого равен, допустим, 100 байт, с проверкой на размер
Недостатком является то, что часть пришедшего сообщения может остаться непринятым
Вариант II:
1) в приеме имеем буфер фиксированного размера
2) принимаем сообщение, ограничивая длиной буфера (пусть 50 байт)
3)
добавляем в буфер, размер которого равен, допустим, 100 байт, с проверкой на размер
4) повторяем прием, пока принимается. В выходной буфер пишем только когда есть куда.
Вариант III:
1) считаем, что в начале принимаемого соообщения идет длина сообщения (достаточно 2 байта)
2) принимаем длину
3) выделяем память
4) принимаем само сообщение длины не более заданной
5) копируем в буфер, размер которого равен, допустим, 100 байт, с проверкой на размер
Во всех случаях, если длина принятого сообщения превышает 99 байт, то принудительно ограничиваем этой длиной
Выбирайте.
Готов выслушать Ваши предложения.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен