2013-07-01 75 views
1

在Qt5中如果我們使用qtcpSocket - > - > disconnectFromHost();這意味着我競爭性地關閉與遠方主機的連接。 我的問題是我如何拒絕一個tcp連接?如何拒絕TCP請求與Qt

Thx all

回答

3

你不能。被動的open()之後,OS會在你的程序休眠時接受每個連接。

0

這是一個TCP協議設計問題。連接打開後,您無法拒絕。你只可以關閉,如果

在這個答案詳細解釋:https://stackoverflow.com/a/1117132/721929

+0

要拒絕的連接,我試圖用「目標不可達」回答拒絕來自客戶端的ICMP迴應請求。所以我爲客戶端和服務器創建ipHeader和icmpHeader。當客戶端嘗試聯繫服務器時,他需要完成icmpHeader(客戶端需要創建icmp回顯請求包)的icmp包的Code = 0,Type = 0。當一個包到達服務器時,他通過另一個包(Code = 7,Type = 3:它是Destination Unreachable包)回答。 我的巨大問題是當客戶端發送迴應請求,我收到服務器EchoReply(我通過WireShark檢查)。 –

+0

「如果您需要處理傳入的TCP連接(例如,在服務器應用程序中),請使用QTcpServer類。調用QTcpServer :: listen()來設置服務器,並連接到QTcpServer :: newConnection()信號,對於每個連接的客戶端發出一次,在你的插槽中,調用QTcpServer :: nextPendingConnection()接受連接並使用返回的QTcpSocket與客戶端通信。來自http://qt-project.org/doc/qt-5.0/qtnetwork/qtnetwork-programming.html。它會適合你的需要嗎? – kikeenrique

+0

@MouradKarim如果你只需要拒絕一些連接,我不知道它與ICMP有什麼關係。 – kikeenrique