Qt网络编程--HTTP服务器(一)

来源:互联网 发布:中国城市化率数据 编辑:程序博客网 时间:2024/05/17 07:25

QTcpSocket

  • 方法
    • connectToHost :连接某一个主机
    • close
    • write :发送数据
    • readAll、read :读取服务端返回来的数据
    • bytesAvailable:返回缓存了多少数据,我在socket上可以读取多少数据
  • 信号
    • connected :socket连接到远程主机会接收到这个信号
    • bytesWritten
    • readyRead :服务端有数据发送过来,可以读取了
    • error

一般步骤

  • connectToHost:连接服务器
  • 响应connected信号,write数据
  • 响应readyRead,read数据
  • 处理错误

例子

tcp.pro

#-------------------------------------------------## Project created by QtCreator 2017-08-26T10:57:20##-------------------------------------------------QT       += core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = tcpTEMPLATE = appSOURCES += main.cpp\        client.cppHEADERS  += client.h

client.h

#ifndef CLIENT_H#define CLIENT_H#include <QTcpSocket>#include <QMainWindow>class Client : public QMainWindow{    Q_OBJECT //为了使用信号与槽,需要写这个宏public:    Client(QWidget *parent = 0);    ~Client();    void startConnect(QString host, quint16 port); // 定义一个外部接口,用于连接外部主机protected slots:    void onConnected(); // 连接服务器    void onReadyRead(); // 读取数据private:    QTcpSocket *m_socket;};#endif // CLIENT_H

client.cpp

#include "client.h"#include <QDebug>Client::Client(QWidget *parent)    : QMainWindow(parent){}Client::~Client(){}// 实现外部接口的功能用于连接外部主机void Client::startConnect(QString host, quint16 port){    m_socket = new QTcpSocket(this);    // 连接信号与槽    connect(m_socket, SIGNAL(connected()),            this, SLOT(onConnected()));    connect(m_socket, SIGNAL(readyRead()),            this, SLOT(onReadyRead()));    // 连接远程主机    m_socket->connectToHost(host, port);}// 实现连接服务器void Client::onConnected(){    m_socket->write("GET / HTTP/1.1\r\n\r\n"); // 发送一个Http头部}// 读取服务器返回的数据void Client::onReadyRead(){    qDebug() << m_socket->readAll();}

main.cpp

#include "client.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    Client w;      w.startConnect("www.baidu.com", 80); // 调用外部接口    return a.exec();}
原创粉丝点击