我需要通过Socket将文件发送到服务器。服务器将为我发送的每条消息发送ACK。如果我在30秒内没有收到ACK,我将不得不再次发送请求。
我的问题是,如何发送/接收ACK?是否有内部ACK或服务器是否应以字节为单位发送ACK?根据我的理解,这里的服务器不会发送ACK作为消息。所以我想知道如何处理这个ACK部分。
提前致谢。
答案 0 :(得分:3)
这可能是与串行端口一起使用时开始使用的协议。没有那种交付和错误检查保证内置在TCP中。如果你必须发送的'数据包'有类似CRC或校验和的东西,那么对于这样的协议来说,这是一个死的铃声。
TCP不需要添加此类检查。当你简单地爆炸文件而不关注ACK时,它可能会工作得很好。虽然您应该阅读它们以防止缓冲区填充。第二种方法是在发送下一个字节块之前,等待从该服务器发回某些。
如果要检查ACK,请查找值为6的单字节,即ACK的默认ASCII控制代码。除非协议实现了一个帮助它检测重复块的'块号',否则我不会实现'when when when timeout'功能,这可能会在接收端失败并且数据加倍。只需发送下一个块。