我需要通过Socket将文件发送到服务器.服务器将为我发送的每条消息发送ACK.如果我在30秒内没有收到ACK,我将不得不再次发送请求.
我的问题是,如何发送/接收ACK?是否有内部ACK或服务器是否应以字节为单位发送ACK?根据我的理解,这里的服务器不会发送ACK作为消息.所以我想知道如何处理这个ACK部分.
提前致谢.
这可能是一个在与串行端口一起使用时开始使用的协议。它没有 TCP 中内置的那种传送和错误检查保证。如果您必须发送的“数据包”包含 CRC 或校验和之类的内容,那么这就是此类协议的确切含义。
对于 TCP 来说,添加这种类型的检查不是必需的。当你只是简单地爆破文件而不关注 ACK 时,它可能会工作得很好。尽管您应该阅读它们以防止缓冲区被填满。第二种方法是在发送下一个字节块之前简单地等待从该服务器发回的内容。
如果您无论如何都想检查 ACK,则查找值为 6 的单个字节,这是 ACK 的默认 ASCII 控制代码。我不会实现“超时时重新发送”功能,除非协议实现了一个“块编号”来帮助它检测重复的块,这很可能在接收端因双倍数据而失败。只需发送下一个块。
| 归档时间: |
|
| 查看次数: |
6084 次 |
| 最近记录: |