qt socket通信

// server 
    #include "testnet.h"   
    #include "ui_testnet.h"   
    #include <QtGui>   
    Testnet::Testnet(QWidget *parent) :   
        QMainWindow(parent),   
        ui(new Ui::Testnet)   
    {   
        ui->setupUi(this);   
        this->connect(ui->pushButton_start,SIGNAL(clicked()),this,SLOT(startTcpserver()));   
        this->connect(ui->pushButton_send,SIGNAL(clicked()),this,SLOT(sendMessage()));   
    } 
    Testnet::~Testnet()   
    {   
        delete ui;   
    } 
    void Testnet::startTcpserver()   
    {   
        m_tcpServer = new QTcpServer(this);   
       
        m_tcpServer->listen(QHostAddress::Any,19999); //监听任何连上19999端口的ip   
       
        connect(m_tcpServer,SIGNAL(newConnection()),this,SLOT(newConnect())); //新连接信号触发,调用newConnect()槽函数,这个跟信号函数一样,其实你可以随便取。   
    } 
    void Testnet::newConnect()   
    {   
            m_tcpSocket = m_tcpServer->nextPendingConnection(); //得到每个连进来的socket   
            connect(m_tcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage())); //有可读的信息,触发读函数槽 
    }  
    void Testnet::readMessage() //读取信息   
    {  
        QByteArray qba= m_tcpSocket->readAll(); //读取   
        qDebug()<<qba;   
        QString ss=QVariant(qba).toString();   
        ui->textEdit_rec->setText(ss);   
       
    } 
    void Testnet::sendMessage() //发送信息   
    {   
        QString strMesg= ui->lineEdit_sendmessage->text();   
        qDebug()<<strMesg;   
        m_tcpSocket->write(strMesg.toStdString().c_str(),strlen(strMesg.toStdString().c_str())); //发送   
    }   
 
// client 
    #include "testnet_c.h"   
    #include "ui_testnet_c.h"   
    testnet_c::testnet_c(QWidget *parent) :   
        QMainWindow(parent),   
        ui(new Ui::testnet_c)   
    {   
        ui->setupUi(this);   
       
        this->connect(ui->pushButton_con,SIGNAL(clicked()),this,SLOT(connectServer()));   
        this->connect(ui->pushButton_send,SIGNAL(clicked()),this,SLOT(sendMesg()));   
    }   
       
    testnet_c::~testnet_c()   
    {   
        delete ui;   
    }   
 
    void testnet_c::connectServer()   
    {   
        m_tcpSocket = new QTcpSocket(this);   
        m_tcpSocket->abort();   
        m_tcpSocket->connectToHost("192.168.1.178",19999);   
       
        connect(m_tcpSocket,SIGNAL(readyRead()),this,SLOT(readMesg()));   
    } 
    void testnet_c::readMesg() //读取信息   
    {   
       QByteArray qba =   m_tcpSocket->readAll();   
       
       ui->textEdit_recmesg->clear();   
       
       qDebug()<<qba;   
       QString ss=QVariant(qba).toString();   
       ui->textEdit_recmesg->setText(ss);   
    } 
    void testnet_c::sendMesg() //发送信息   
    {   
        QString ss= ui->lineEdit_sendmesg->text();   
        m_tcpSocket->write(ss.toStdString().c_str(),strlen(ss.toStdString().c_str()));   
        ui->lineEdit_sendmesg->clear();   
    }  

你可能感兴趣的:(c,UI,socket,delete,qt,Signal)