我最近一直在使用winsock api,并且发现当我增加发送方的缓冲区大小并用零填充未使用的字节时,接收方还会将这些零附加到文件末尾。如果我使用的应用程序缓冲区更多,比如3072,那么我在另一端收到的文件似乎已损坏,并且由于附加零而显得很明显。但它适用于2048,1024的缓冲区,在这种情况下,在发送之前追加了零。一个人如何被腐化而不是另一个呢?Winsock TCP应用程序缓冲区
0
A
回答
1
当我增加发送者的缓冲区大小并用零填充未使用的字节时,接收者也会将这些零附加到文件的末尾。
所以这些字节根本不是'未使用'的。你发给他们。您在发送函数调用中使用了错误的计数。
如果我使用的应用程序缓冲区更多,比如3072,那么我在另一端收到的文件似乎已损坏,并且由于附加零而显得很明显。
正确的。
但它在缓冲区为2048,1024的情况下正常工作,在这种情况下,在发送之前追加了零。一个人如何被腐化而不是另一个呢?
因为您的代码中只有较大的缓冲区大小存在缺陷。可能您发送的文件是2048字节的倍数,因此您的文件结束错误未被公开。
不看你的代码是不可能的,但很可能你忽略了从文件读取返回的计数,并发送整个缓冲区,而不是发送'count'字节。这在文件结尾处失败,但是在其他任何时候读取的文件都不能填充它没有义务做的缓冲区时也会失败。
相关问题
- 1. Winsock TCP缓冲行为
- 2. Rx缓冲Winsock Socket编程C++。如何清除RX缓冲区?
- 3. 使用TCP接收缓冲区作为多媒体应用程序的缓冲区
- 4. TCP接收缓冲区
- 5. 通过Winsock发送键盘缓冲区
- 6. Winsock发送recv缓冲区大小
- 7. 用于TCP连接的缓冲区
- 8. 接收端的应用程序什么时候从TCP缓冲区读取?
- 9. TCP套接字程序发送一个缓冲区。
- 10. 最佳缓冲区大小 - TCP
- 11. recvfrom最大缓冲区TCP/IP
- 12. tcp缓冲区中的多条消息
- 13. 如何解码TCP缓冲区数据
- 14. 阅读TCP数据包缓冲区
- 15. Node.js TCP服务器输入缓冲区
- 16. C#TCP服务器缓冲区
- 17. Python的TCP缓冲区溢出
- 18. 两个应用程序使用帧缓冲区
- 19. 读取TCP缓冲
- 20. waveOutWrite缓冲区永远不会返回给应用程序
- 21. 无法交换iPhone应用程序中的渲染缓冲区
- 22. 应用程序开始调试池缓冲区指令
- 23. 连续读缓冲区停止应用程序
- 24. 双缓冲区的Java小应用程序闪烁
- 25. 网络应用程序有多少个传入缓冲区?
- 26. 在GUI应用程序中撤消缓冲区
- 27. C++的Winsock应用程序访问冲突
- 28. Winsock WSAAsyncSelect发送没有无限的缓冲区
- 29. IStream COM读缓冲区,然后通过winsock发送
- 30. 关于Winsock内核缓冲区和Nagle算法的疑问