gpt4 book ai didi

c - socket 清洁

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:59 25 4
gpt4 key购买 nike

我对 unix 套接字(TCP 本地)有点困惑

我有一个服务器和一个客户端:

  • client 通过套接字向服务器发送一些信息(使用send)多次
  • server 打印此数据(server 调用 recv 来接收它)。

问题是 server 不仅打印由 client 发送的最后信息,还打印一些旧信息(有时 已损坏)这个客户端也是,所以我想套接字以某种方式累积了客户端写入的所有先前数据

server如何只接收client的最新数据?我应该以某种方式清理套接字,还是应该一直关闭它并创建新的(非常糟糕的解决方案)?

最佳答案

TCP套接字是流套接字。
这意味着您发送的所有数据都不会被视为消息序列,而是字节序列。字节按顺序接收,没有增减,但不一定在同一个chunk中。

例如,如果您的客户端调用send 3 次,每次调用1000 个字节,您无法判断recv 将返回数据多少次。它可能返回 3 次,每次 1000 个字节,或者只返回一次 3000 个字节,或者理论上什至每次 1 个字节返回 3000 次。

关于c - socket 清洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com