qt网络应用----socket通信例子

上传人:第*** 文档编号:32817810 上传时间:2018-02-12 格式:DOC 页数:7 大小:94.50KB
返回 下载 相关 举报
qt网络应用----socket通信例子_第1页
第1页 / 共7页
qt网络应用----socket通信例子_第2页
第2页 / 共7页
qt网络应用----socket通信例子_第3页
第3页 / 共7页
qt网络应用----socket通信例子_第4页
第4页 / 共7页
qt网络应用----socket通信例子_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《qt网络应用----socket通信例子》由会员分享,可在线阅读,更多相关《qt网络应用----socket通信例子(7页珍藏版)》请在金锄头文库上搜索。

1、Qt 网络应用-socket 通信例子 1.我们新建 Qt4 Gui Application,工程名为“udpone”,选中QtNetwork 模块,Base class 选择 QMainWindow。(说明:如果一些Qt Creator 版本没有添加模块一项,我们就需要在工程文件 tcpServer.pro中添加一行代码:QT += network)2.在 mainwindow.ui 中添加 2 个文本编辑框(Text Edit),左边的那个的objectName 改为为 textSend,右边的那个的 objectName 改为textReceive,添加一个按钮,改其 objectNam

2、e 为 send,如下所示:3.在 mainwindow.h 文件中加入#include ,添加 public 变量 QHostAddress *hostaddr1;和 QHostAddress *hostaddr2;添加 private 变量 QUdpSocket *udpSocket1;和 QUdpSocket *udpSocket2;添加私有槽函数:private slots:void send();void receive();4.在 mainwindow.cpp 文件中,加入如下代码:(1)在构造函数中添加:udpSocket1=new QUdpSocket(this);udpSoc

3、ket2=new QUdpSocket(this);hostaddr1 = new QHostAddress(192.168.253.106);hostaddr2 = new QHostAddress(192.168.253.188);bool conn=udpSocket1-bind(*hostaddr1,6666,QUdpSocket:ShareAddress);/监听本机上的6666 端口,如果有消息到来,就会发送 readyRead()信号。if(!conn)QMessageBox box;box.setText(tr(连接错误);box.exec();elseconnect(udpS

4、ocket1,SIGNAL(readyRead(),this,SLOT(receive();connect(ui-send,SIGNAL(clicked(),this,SLOT(send();(2)实现 send 函数:void MainWindow:send()QMessageBox box;QString text=ui-textSend-toPlainText();if(text.length()=0)box.setText(tr(请输入发送内容);box.exec();udpSocket2-writeDatagram(text.toUtf8(),text.length(),*hosta

5、ddr2,6665);/向IP 为 192.168.253.188 的机器的 6665 端口发送数据 (3)实现 receive 函数 :void MainWindow:receive()while(udpSocket1-hasPendingDatagrams() QByteArray data;data.resize(udpSocket1-pendingDatagramSize();udpSocket1-readDatagram(data.data(),data.size();QString str = data.data();ui-textReceive-insertPlainText(s

6、tr+n);OK,完成一半!上面这个程序需要运行在 IP 为 192.168.253.106 的机器上!下面将要做的是另外一个工程,需要运行在 IP 为 192.168.253.188 的机器上。下面这个工程相对上面那个工程几乎没变化,只是把 hostaddr1 和hostaddr2 的地址掉换了一下,把发送和接受的端口互换了一下。1.我们新建 Qt4 Gui Application,工程名为“udptwo”,选中QtNetwork 模块,Base class 选择 QMainWindow。(说明:如果一些Qt Creator 版本没有添加模块一项,我们就需要在工程文件 tcpServer.p

7、ro中添加一行代码:QT += network)2.在 mainwindow.ui 中添加 2 个文本编辑框(Text Edit),左边的那个的objectName 改为为 textSend,右边的那个的 objectName 改为textReceive,添加一个按钮,改其 objectName 为 send,如下所示:3.在 mainwindow.h 文件中加入#include ,添加 public 变量 QHostAddress *hostaddr1;和 QHostAddress *hostaddr2;添加 private 变量 QUdpSocket *udpSocket1;和 QUdpS

8、ocket *udpSocket2;添加私有槽函数:private slots:void send();void receive();4.在 mainwindow.cpp 文件中,加入如下代码:(1)在构造函数中添加:udpSocket1=new QUdpSocket(this);udpSocket2=new QUdpSocket(this);hostaddr1 = new QHostAddress(192.168.253.188);hostaddr2 = new QHostAddress(192.168.253.106);bool conn=udpSocket1-bind(*hostaddr

9、1,6665,QUdpSocket:ShareAddress);/监听本机上的6665 端口,如果有消息到来,就会发送 readyRead()信号。if(!conn)QMessageBox box; box.setText(tr(连接错误);box.exec();elseconnect(udpSocket1,SIGNAL(readyRead(),this,SLOT(receive();connect(ui-send,SIGNAL(clicked(),this,SLOT(send();(2)实现 send 函数:void MainWindow:send()QMessageBox box;QStr

10、ing text=ui-textSend-toPlainText();if(text.length()=0)box.setText(tr(请输入发送内容);box.exec();udpSocket2-writeDatagram(text.toUtf8(),text.length(),*hostaddr2,6666);/向IP 为 192.168.253.106 的机器的 6666 端口发送数据(3)实现 receive 函数 :void MainWindow:receive()while(udpSocket1-hasPendingDatagrams() QByteArray data;data

11、.resize(udpSocket1-pendingDatagramSize();udpSocket1-readDatagram(data.data(),data.size(); QString str = data.data();ui-textReceive-insertPlainText(str+n);两个机器上同时运行这两个程序,效果如下:192.168.253.106 机器上的程序运行后,输入 one,点击发送后,会在192.168.253.188 机器上的右边文本编辑框内显示出来。同样,192.168.253.188 机器上的程序运行后,输入 two,点击发送后,会在192.168.253.106 机器上的右边文本编辑框内显示出来。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号