小编mr_*_*ude的帖子

如何检查TCP发送缓冲区的容量以确保数据传输

我想在我的TCP界面添加发送确认.非阻塞写入可以填充发送缓冲区,但是如果连接失败,数据可能永远不会到达 - 同时写入已报告数据已被接收(由本地套接字).

如果我在堆栈中添加额外的ack,我可以验证收到的每个数据.我认为ftp会这样做.但我不能借用任何人的代码而宁愿不实施ack/resend,特别是因为TCP已经完成了大部分工作.

我认为如果我可以在每次write()之后验证套接字发送缓冲区是否为空,那么可以实现.如果没有更多的数据,它应该已经全部交付.我不介意清空缓冲区的延迟.

编辑:我意识到TCP/socket实现因系统而异,但如果有Berkeley或Linux解决方案,它可能对我有用.

编辑:为了解决一些建议,我想实现三个级别的TCP接口,我不知道如何完成*一个.

  • 对于喜欢危险生活的应用程序,不保证交付的正常TCP.
  • *TCP验证远程主机的接收,即使数据包从未传递到远程应用程序.这降低了我的大部分连接风险(移动客户端),并且可以在客户端完全实现.我认为如果我可以验证套接字传出缓冲区为空,这可以实现.
  • 应用层ACK和重新发送在TCP或UDP之上实现,以便验证端点.

sockets ip networking tcp

0
推荐指数
1
解决办法
5262
查看次数

标签 统计

ip ×1

networking ×1

sockets ×1

tcp ×1