欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

利用QT的UDP技術,實現(xiàn)兩個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ā)送端口號:"));
    edit1=new QLineEdit();
    label2=new QLabel(tr("接收端口號:"));
    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("消息內容:"));
    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);
}
 
//綁定接收端口號
void Widget::mybindip()
{
    udpsock->close();
    //獲取接收端口號
    QString port1=edit2->text();
    if(port1.isEmpty())
    {
        QMessageBox::critical(this,"錯誤信息","發(fā)送端口號不可以為空!");
        return ;
    }
    udpsock->bind(port1.toInt());
    QMessageBox::information(this,"提示信息","綁定成功!端口號是"+port1);
}
 
//發(fā)送消息
void Widget::mysenddata()
{
    //獲取發(fā)送端口號
    QString port2=edit1->text();
    if(port2.isEmpty())
    {
        QMessageBox::critical(this,"錯誤信息","發(fā)送端口號不可以為空!");
        return ;
    }
    //獲取發(fā)送內容
    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));
    }
}
 
//關閉
void Widget::closeEvent(QCloseEvent *event)
{
    if(QMessageBox::information(this,"提示信息","確定要退出該程序?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::Yes)
    {
        event->accept();
    }else
    {
        event->ignore();
    }
}
 
Widget::~Widget()
{
 
}

效果圖

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

相關文章

  • C++實現(xiàn)LeetCode(228.總結區(qū)間)

    C++實現(xiàn)LeetCode(228.總結區(qū)間)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(228.總結區(qū)間),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C++ class和struct到底有什么區(qū)別詳解

    C++ class和struct到底有什么區(qū)別詳解

    這篇文章主要介紹了C++ class和struct到底有什么區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C++ OpenCV學習之圖像金字塔與圖像融合詳解

    C++ OpenCV學習之圖像金字塔與圖像融合詳解

    圖像金字塔分為兩種:高斯金字塔和拉普拉斯金字塔。圖像金字塔在保持細節(jié)的條件下進行圖像融合等多尺度編輯操作非常有用。本文將利用圖像金字塔實現(xiàn)圖像融合,需要的可以參考一下
    2022-03-03
  • C++ 中國象棋的實現(xiàn)流程詳解

    C++ 中國象棋的實現(xiàn)流程詳解

    中國象棋是起源于中國的一種棋,屬于二人對抗性游戲的一種,在中國有著悠久的歷史。由于用具簡單,趣味性強,成為流行極為廣泛的棋藝活動
    2021-11-11
  • C語言中結構體(struct)的幾種初始化方法

    C語言中結構體(struct)的幾種初始化方法

    相信大家都知道struct結構體是C語言中非常重要的復合類型,初始化的方法很多,那么小編下面對這些方法進行總結,便于自己和大家以后查閱,有需要的可以參考借鑒。
    2016-08-08
  • 有關C++繼承與友元、繼承與類型轉換詳解

    有關C++繼承與友元、繼承與類型轉換詳解

    下面小編就為大家?guī)硪黄嘘PC++繼承與友元、繼承與類型轉換詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 詳解c++良好的編程習慣與編程要點

    詳解c++良好的編程習慣與編程要點

    c++語言的靈活是建立在對編程者個人的編程素質的嚴格要求基礎上的,好的C++編程習慣能避免很多問題。沒有好的編程習慣,極有可能編寫一行代碼,編譯器能報十幾個錯誤,而且就算編譯通過了,將來在運行過程中也會有很多莫名奇妙的問題
    2021-06-06
  • C語言實現(xiàn)SM4加解密方式

    C語言實現(xiàn)SM4加解密方式

    這篇文章主要介紹了C語言實現(xiàn)SM4加解密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺談C++函數(shù)聲明后面加throw()的作用(必看)

    淺談C++函數(shù)聲明后面加throw()的作用(必看)

    下面小編就為大家?guī)硪黄獪\談C++函數(shù)聲明后面加throw()的作用(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 學好C++必須做到的50條 絕對經典!

    學好C++必須做到的50條 絕對經典!

    學好C++必須做到的50條,絕對經典!想要學好C++的朋友一定要認真閱讀本文,更要做到以下50條
    2016-09-09

最新評論