【问题标题】:flush remaining bytes on a socket刷新套接字上的剩余字节
【发布时间】:2021-10-04 05:04:40
【问题描述】:

我在很多地方读到,除了 Unix 域套接字之外,不可能从任何套接字上的接收调用中刷新剩余字节。我需要一种在不关闭连接的情况下不读取 TCP 套接字上所有传入数据的方法。服务器发送 200 个字节我读取 20 然后继续发送下一个请求然后调用接收然后剩余的 180 将不存在......我怎么能这样做呢? 更容易阅读:

//Server sends 200 bytes
recv(180)
send("request")
//receive whole new response without the remaining bytes from the last one.

【问题讨论】:

  • 我不知道你也可以在 Unix 域套接字上做到这一点,除非你可以在上面 seek()

标签: sockets tcp


【解决方案1】:

做你想做的唯一方法是将recv() 180 个不需要的字节放入缓冲区,然后忽略(即不使用)该缓冲区的内容。

TCP 是一个严格的 FIFO 流协议,它没有任何明确规定从流中删除字节。

【讨论】:

  • 像 QUIC 这样的公司有能力做到这一点吗?
猜你喜欢
  • 2019-06-30
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 2011-05-23
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
相关资源
最近更新 更多