0
我試圖模擬使用TCP連接+ HTTP標頭的http請求。 我使用VLC播放器測試它。我使用QT來開發我的應用程序。正常HTTP請求與TCP連接+ HTTP標頭
所以,基本上我開始在VLC播放器中流媒體視頻到主機http://192.168.0.100:55555。然後在代碼中,我嘗試通過http GET請求連接到服務器,該請求成功。
我想代替http請求通過TCP連接到http://192.168.0.100:55555並使用相同的套接字發送純文本GET請求作爲文本,但我得到QAbstractSocket::ConnectionRefusedError
。
QTcpSocket* socket = new QTcpSocket();
socket->connectToHost(m_session->remoteHost().address, m_session->remoteHost().port);
// Then I get QAbstractSocket::ConnectionRefusedError in a slot
// connected to error() signal
我不知道是否有可能這樣做,如果您有任何建議。
謝謝
謝謝你的回答,但那不是我想要的。我知道如何使用qt網絡類。我有一個特殊協議的設備,我需要以特殊方式發送請求和數據。 Qt似乎沒有提供這個功能。我需要重新使用http連接使用的同一個端口,將原始數據發送到服務器。這不是我需要的郵寄請求。唯一可以工作(但不是)的是sendCustomRequest,但是作爲第三個參數放置的QIODevice從不讀取。我還沒有看到使用sendCustomRequest的單個工作示例。 – rightaway717
然後,你可能會在TCP和HTTP的頂部使用自定義協議。我這樣說是因爲重新實現HTTP並不是一個好主意,因爲您將慢慢需要重新實現在開發應用程序時發現的小方面。最有可能的是,你會執行它們錯誤和/或錯誤(你看過[rfc](https://www.w3.org/Protocols/rfc2616/rfc2616.html)?)。但有一件事,你可以使用[QHttpHeader](http://doc.qt.io/qt-4.8/qhttpheader.html#toString)以字符串的形式獲取std頭。 –
我不打算重新實現HTTP。我有一個具體的任務,一旦我找到了如何重用相同的tcp連接來發送二進制數據到服務器,即被http GET請求使用,這個任務就會被完成。這就對了。聽起來很簡單,不是嗎?這就是設備開發人員如何實現它,我無法改變它。所以我期待一個答案,比如「你沒辦法做到這一點」,或者解釋爲什麼我沒有做到這一點,以及如何解決它。不過謝謝你'QHttpHeader',不知道它。 – rightaway717