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