最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用QT實(shí)現(xiàn)UDP聊天小程序

 更新時(shí)間:2022年11月18日 17:15:36   作者:音視頻開發(fā)老舅  
這篇文章主要為大家詳細(xì)介紹了潤(rùn)滑利用QT的UDP技術(shù),實(shí)現(xiàn)兩個(gè)QT程序之間的聊天程序。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下

利用QT的UDP技術(shù),實(shí)現(xiàn)兩個(gè)QT程序之間的聊天程序。

示例代碼

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QUdpSocket>
#include <QPushButton>
#include <QLineEdit>
#include <QTextBrowser>
#include <QLabel>
#include <QCloseEvent>
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QUdpSocket *udpsock;
    QPushButton *btn1,*btn2,*btn3;
    QLineEdit *edit1,*edit2,*edit3;
    QLabel *label1,*label2,*label3;
    QTextBrowser *text1;
    void closeEvent(QCloseEvent *event);
private slots:
    void mybindip();
    void mysenddata();
    void recvmydata();
};
 
#endif // WIDGET_H
#include "widget.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QHostAddress>
#include <QMessageBox>
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("聊天室");
    udpsock=new QUdpSocket(this);
    //udpsock->bind(8080);
    connect(udpsock,SIGNAL(readyRead()),this,SLOT(recvmydata()));
    label1=new QLabel(tr("發(fā)送端口號(hào):"));
    edit1=new QLineEdit();
    label2=new QLabel(tr("接收端口號(hào):"));
    edit2=new QLineEdit();
    btn1=new QPushButton(tr("綁定"));
    connect(btn1,SIGNAL(clicked()),this,SLOT(mybindip()));
 
    btn2=new QPushButton(tr("發(fā)送"));
    connect(btn2,SIGNAL(clicked()),this,SLOT(mysenddata()));
    label3=new QLabel(tr("消息內(nèi)容:"));
    edit3=new QLineEdit();
    text1=new QTextBrowser();
 
    QHBoxLayout *lay1=new QHBoxLayout();
    lay1->addWidget(label1);
    lay1->addWidget(edit1);
    lay1->addWidget(label2);
    lay1->addWidget(edit2);
    lay1->addWidget(btn1);
 
    QHBoxLayout *lay2=new QHBoxLayout();
    lay2->addWidget(label3);
    lay2->addWidget(edit3);
    lay2->addWidget(btn2);
    QVBoxLayout *lay3=new QVBoxLayout(this);
    lay3->addLayout(lay1);
    lay3->addLayout(lay2);
    lay3->addWidget(text1);
}
 
//綁定接收端口號(hào)
void Widget::mybindip()
{
    udpsock->close();
    //獲取接收端口號(hào)
    QString port1=edit2->text();
    if(port1.isEmpty())
    {
        QMessageBox::critical(this,"錯(cuò)誤信息","發(fā)送端口號(hào)不可以為空!");
        return ;
    }
    udpsock->bind(port1.toInt());
    QMessageBox::information(this,"提示信息","綁定成功!端口號(hào)是"+port1);
}
 
//發(fā)送消息
void Widget::mysenddata()
{
    //獲取發(fā)送端口號(hào)
    QString port2=edit1->text();
    if(port2.isEmpty())
    {
        QMessageBox::critical(this,"錯(cuò)誤信息","發(fā)送端口號(hào)不可以為空!");
        return ;
    }
    //獲取發(fā)送內(nèi)容
    QString txt=edit3->text();
    char buf[1024]={0};
    strcpy(buf,txt.toStdString().data());
    //定義地址類
    QHostAddress *serip=new QHostAddress();
    serip->setAddress("127.0.0.1");
    udpsock->writeDatagram(buf,strlen(buf),*serip,port2.toInt());
    delete serip;
    edit3->clear();
    edit3->setFocus();
}
 
//接收消息
void Widget::recvmydata()
{
    QMessageBox::information(this,"提示信息","接收到消息");
    char buf[1024]={0};
    while(udpsock->hasPendingDatagrams())
    {
        udpsock->readDatagram(buf,sizeof(buf));
        text1->append(buf);
        memset(buf,0,sizeof(buf));
    }
}
 
//關(guān)閉
void Widget::closeEvent(QCloseEvent *event)
{
    if(QMessageBox::information(this,"提示信息","確定要退出該程序?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::Yes)
    {
        event->accept();
    }else
    {
        event->ignore();
    }
}
 
Widget::~Widget()
{
 
}

效果圖

到此這篇關(guān)于利用QT實(shí)現(xiàn)UDP聊天小程序的文章就介紹到這了,更多相關(guān)QT UDP聊天程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中bool變量的深入理解

    C語(yǔ)言中bool變量的深入理解

    C語(yǔ)言中沒(méi)有BOOL類型變量,它是C++獨(dú)有的,由于使用BOOL類型可以使代碼更具有可讀性,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中bool變量的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • c++ vector對(duì)象相關(guān)總結(jié)

    c++ vector對(duì)象相關(guān)總結(jié)

    這篇文章主要介紹了c++ vector對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • socket編程的詳細(xì)講解

    socket編程的詳細(xì)講解

    本文詳細(xì)講解了socket編程,它是網(wǎng)絡(luò)中經(jīng)常使用的一門技術(shù),該文章通過(guò)大量的代碼來(lái)解釋,大家可以參考參考
    2021-08-08
  • 詳解C++ 編寫String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)

    詳解C++ 編寫String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)

    這篇文章主要介紹了詳解C++ 編寫String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)的相關(guān)資料,這里提供實(shí)例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • C++雙向鏈表實(shí)現(xiàn)簡(jiǎn)單通訊錄

    C++雙向鏈表實(shí)現(xiàn)簡(jiǎn)單通訊錄

    這篇文章主要為大家詳細(xì)介紹了C++雙向鏈表實(shí)現(xiàn)簡(jiǎn)單通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++ 常量成員常量返回值詳解

    C++ 常量成員常量返回值詳解

    這篇文章主要介紹了C++ 常量成員常量返回值詳解,需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言動(dòng)態(tài)數(shù)組的使用實(shí)現(xiàn)代碼

    C語(yǔ)言動(dòng)態(tài)數(shù)組的使用實(shí)現(xiàn)代碼

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)數(shù)組的使用實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Qt中QZXing 的編譯與使用

    Qt中QZXing 的編譯與使用

    本文主要介紹了Qt中QZXing 的編譯與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談關(guān)于C語(yǔ)言中#define的副作用

    淺談關(guān)于C語(yǔ)言中#define的副作用

    這篇文章主要介紹了關(guān)于C語(yǔ)言中#define的副作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C語(yǔ)言中指針的加減運(yùn)算方法示例

    C語(yǔ)言中指針的加減運(yùn)算方法示例

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中指針的加減運(yùn)算的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論

宝清县| 赤峰市| 晋中市| 辽源市| 诸城市| 长武县| 科技| 奉节县| 普宁市| 五大连池市| 璧山县| 江山市| 察哈| 沅陵县| 昔阳县| 澎湖县| 武夷山市| 蒙自县| 鄯善县| 吉林市| 威远县| 高阳县| 巨野县| 广宁县| 兴海县| 普兰县| 丹寨县| 大足县| 南通市| 高陵县| 肇州县| 阿拉尔市| 克山县| 江源县| 昌江| 和平区| 临沂市| 澎湖县| 宣汉县| 台州市| 五大连池市|