代码之家  ›  专栏  ›  技术社区  ›  Lrrr

如何在c中检测tcp客户端与服务器的连接++

  •  0
  • Lrrr  · 技术社区  · 13 年前

    我有一个tcp客户端/服务器,我想检测客户端的连接丢失;因为我的客户端有多个接口,每次我用其中一个接口连接到服务器,我想知道如何检测客户端的连接丢失,这样我就可以用另一个接口将我的tcp客户端连接到服务器上,如果所有接口都坏了,我会将数据存储在文本文件中。我在谷歌上搜索了一下,我已经看到了《活着》,但这不是我想要的。

    如果重要的话,我的项目是在linux中,代码是在c++中。

    3 回复  |  直到 13 年前
        1
  •  1
  •   mah    13 年前

    试着从插座上读。当套接字关闭时,读取将失败,从而进行简单的检测。你可以在一个专用的检测线程中这样做,这样你的主线程就不会阻塞。

        2
  •  1
  •   Serge Ivanoff    13 年前

    TCP连接被设计用于纠错,而不是时间关键型的。此错误更正包括网络超时。

    在套接字实际关闭之前,读取和写入不会失败,这可能不会持续很长时间。

    客户端决定连接是否超时的唯一方法是检测到在指定时间内没有收到任何消息,然后手动关闭套接字。

    这就是Keep Alive消息的作用。

        3
  •  1
  •   Lrrr    13 年前

    我发现的最好的方法是检查缓冲区,如果缓冲区是空的,这意味着你的TCP客户端成功地将数据包发送到TCP服务器,你可以发送下一个数据包;用于检查可以使用的缓冲区 SIOCOUTQ ; 它非常易于使用,并向您显示缓冲区中有多少数据。