这局要赢 2017-08-24 07:29 采纳率: 0%
浏览 3622

Socket关闭后,如何清理输出缓冲区来阻止已经在输出缓冲区中的数据发送?

实践发现,当使用socketChannel.close()之后,对于close之前已经写入缓冲区但由于网络原因没有发送成功的数据,在server端网络恢复后,还是能接收到该数据;
求问是否有什么办法能在调用Close之前,将此socketChannel的输出缓冲区中的数据清理掉?

从该博主处得到的:http://blog.csdn.net/Ctrl_qun/article/details/52454380

这些I/O缓冲区特性可整理如下:
I/O缓冲区在每个TCP套接字中单独存在;
I/O缓冲区在创建套接字时自动生成;
即使关闭套接字也会继续传送输出缓冲区中遗留的数据;
关闭套接字将丢失输入缓冲区中的数据。

  • 写回答

2条回答 默认 最新

  • litao_jimmy 2017-08-24 08:02
    关注

    如果没有办法清理,可以换一个思路,在Close之前,先发送关闭指令给Server,Server收到关闭指令后,主动断开连接,不再处理后面收到的数据包。

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大