【问题标题】:How can I reject TCP request with Qt如何使用 Qt 拒绝 TCP 请求
【发布时间】:2013-06-28 07:28:04
【问题描述】:

在Qt5中如果我们使用qtcpSocket->->disconnectFromHost();这意味着我完全关闭了与远程主机的连接。 我的问题是如何拒绝 tcp 连接???

谢谢大家

【问题讨论】:

    标签: qt sockets tcp client-server


    【解决方案1】:

    你不能。在被动 open() 之后,操作系统会在您的程序休眠时接受每个连接。

    【讨论】:

      【解决方案2】:

      这是一个 TCP 协议设计问题。一旦打开连接,您就无法拒绝它。你可以关闭,如果

      这个答案的详细解释:https://stackoverflow.com/a/1117132/721929

      【讨论】:

      • 为了拒绝连接,我尝试通过回答“无法到达的目的地”来拒绝来自客户端的 icmp 请求。所以我为客户端和服务器创建了 ipHeader 和 icmpHeader。而当客户端尝试联系服务器时,他需要完成 icmpHeader 的 icmp 包的 Code = 0 , Type = 0(客户端需要创建 icmp echo request 包)。当一个包裹到达服务器时,他用另一个包裹回答(代码=7,类型=3:它是目的地无法到达的包裹)。我的大问题是当客户端发送回显请求时,我在服务器 EchoReply 中收到(我通过 WireShark 检查)。
      • "如果您需要处理传入的 TCP 连接(例如,在服务器应用程序中),请使用 QTcpServer 类。调用 QTcpServer::listen() 来设置服务器,并连接到 QTcpServer: :newConnection() 信号,每个连接的客户端都会发出一次。在您的插槽中,调用 QTcpServer::nextPendingConnection() 以接受连接并使用返回的 QTcpSocket 与客户端通信。”来自qt-project.org/doc/qt-5.0/qtnetwork/qtnetwork-programming.html。它符合您的需要吗?
      • @MouradKarim 如果您只是需要拒绝某些连接,我看不出它与 ICMP 有什么关系。
      猜你喜欢
      • 2015-09-30
      • 1970-01-01
      • 2015-07-26
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多