Я недавно работал с winsock api, и я обнаружил, что когда я увеличиваю размер буфера отправителя и заполняю неиспользуемые байты нулем, приемник также добавляет эти нули в конец файла. Если буфер приложения я использую больше, скажем, 3072, файл, который я получаю на другом конце, кажется, поврежден и кажется очевидным из-за добавления нулей. Но он отлично работал с буфером 2048, 1024, и в этих случаях к отправке добавлялись нули. как получилось, что он испорчен, а не другой?Winsock TCP application buffer
ответ
Когда я увеличиваю размер буфера отправителя и заполняю неиспользуемые байты нулем, приемник также добавляет эти нули в конец файла.
Таким образом, байты не были «неиспользуемыми» вообще. Вы их отправили. Вы использовали неправильный счет в вызове функции отправки.
Если буфер приложения, который я использую, больше, скажем 3072, файл, который я получаю на другом конце, кажется, поврежден и кажется очевидным из-за добавления нулей.
Исправить.
Но он отлично работал с буфером 2048, 1024, и в этих случаях к отправке добавлялись нули. почему один из них испорчен, а не другой?
Поскольку у вас есть ошибка в вашем коде, которая была выставлена только большим размером буфера. Вероятно, файл, который вы отправили, был кратным 2048 байт, поэтому ошибка в конце файла не была обнаружена.
Без просмотра кода невозможно быть уверенным, но, скорее всего, вы игнорируете счет, возвращаемый при чтении из файла, и отправляете весь буфер, а не просто отправляете байты count. Это заканчивается неудачей в конце файла, но он также может не работать в любое другое время, когда он читал, не заполнял буферы, которые он не обязан делать.
- 1. application/zip winsock C++
- 2. C++ Winsock recv() buffer junk
- 3. Winsock send recv buffer size
- 4. Winsock C TCP Socket
- 5. tcp без Winsock
- 6. C# TCP Server buffer
- 7. lwip buffer in microplaze application
- 8. Winsock server/client application in C#
- 9. VB6 Клиент WinSock TCP и сервер .NET TCP
- 10. TCP-открытые соединения TCP, Winsock, Listen/Accept Behavior
- 11. странное поведение сервера tcp (используя winsock)
- 12. TCP Winsock: принимать несколько соединений/клиентов
- 13. Winsock send() через TCP в C
- 14. Отправить строку с сокетами в C++ (Winsock TCP/IP)
- 15. TCP Window and Buffer - проверьте мое понимание?
- 16. Winsock TCP connection, send fine, но recv firewall заблокирован
- 17. Сомнение в отношении алгоритма Winsock Buffer и Nagle
- 18. Winsock nonblocking send() wait buffer. Каков правильный метод?
- 19. C# TCP Chat Application Threading
- 20. Пример TCP Client/Server Application
- 21. Winsock; coalesing send calls
- 22. WinSock 2.2 TCP/IPv4 send() всегда возвращает все отправленные байты
- 23. C++/Winsock TCP send/recv проблема между клиентом/сервером
- 24. POST Ошибка Winsock
- 25. C++ Язык Issue (мотивировано Google Protocol Buffer Application)
- 26. Winsock
- 27. Winsock Client - Подключение к сетевой камере через TCP/IP4
- 28. winsock 2. безопасность потока для одновременной отправки. tcp
- 29. Winsock TCP-пакеты отправлены, но не доходят до хоста
- 30. Отправить письмо с помощью C++ WINSOCK (TCP, SSL)