Я пытаюсь прочитать файл и отправить его по сети: ниже мой код на сервере для чтения файлов и отправок,C чтение вызова буферизации дополнительного символ
while((sent = read(fp, send_buf, BUFSIZE)) > 0)
{
write(cssock, send_buf, strlen(send_buf));
memset(send_buf, 0, BUFSIZE);
}
и я читаю его на клиенте как:
while(readBytes = read(sock, file_data, BUFSIZE) > 0)
{
write(fp, file_data, strlen(file_data));
}
файл передается в порядке, но я получаю дополнительный символ в конце буфера и мой файл записывается в виде:
привет меня зовут abcd garbage-char
garbage-char - некоторый арбитральный характер. Любая идея, почему я получаю такой дополнительный характер?
примечание: я проверил дважды файл, и у него ничего нет, кроме строки «мое имя - abcd». Нет места, нет новой линии. Любая помощь приветствуется.
какой дополнительный символ вы получаете? – yanchong
его дополнительный байт. Я не могу вставить его здесь. Квадрат с таким, как показано ниже: 0F – mihirj
Предлагаю вам распечатать свой send_buf на вашем сервере, а ваш файл_данные в клиенте - посмотреть, одинаковы ли они. Кроме того, используйте memset (send_buf, 0, BUFSIZE) перед тем, как прочитать свой файл на сервере, и memset (filedata, 0, BUFSIZE), прежде чем читать из сокета на клиенте. – yanchong