Я пишу простой сервер/клиент в c, где сервер временно хранит сообщение от клиента и извлекает его, когда клиент запрашивает его.буфер чтения из сокета
Проблема заключается в том, что клиент получает сообщение от сервера, буфер действует как-то странно. Все, что я сделал это читать столько, сколько получает от сервера и распечатать его на экране, но как-то буфер был перезаписан более чем максимальный размер буфера
в клиенте
while((byteRead = recv(ssock, buffer, MAXBUF, 0)) > 0)
{
if(byteRead <= 0)
break;
printf("%s", buffer);
}
где MAXBUF 256. Это держать содержит некоторые garbages так я рассмотрел размер строки в буфере и удивительно
printf("%d READ vs %d buffer strlen \n", byteRead, strlen(buffer))
показать мне, что byteRead 256, но длина строки буфера составляет 262.
Любая идея ??
P.s на стороне сервера он правильно считывает файл и отправляет его в сокет.
ок я получил эту точку. Но на стороне сервера, когда клиент отправляет сообщение серверу через сокет, он получает правильно, и я не добавлял нулевой указатель. Даже я думал, что добавил нулевой указатель перед отправкой клиенту, он все еще показывает мусорные вещи; – REALFREE
@REALFREE: Когда мы говорим о нулевом терминаторе, мы говорим о «nul» * character *, а не о указателе null *.Кроме того, в случае вашего сервера он может * появиться * работать из-за удачи, но вы делаете что-то неподобающее. – Artelius