5.关于QT中的网络编程,QTcpSocket,QUdpSocket
1
新建一个项目:TCPServer.pro
A
修改TCPServer.pro,注意:如果是想使用网络库,需要加上network
|
SOURCES TcpServer.cpp TcpClient.cpp HEADERS TcpServer.h TcpClient.h QT CONFIG |
B
新建如下文件,因为要用到网络库,所以加上network
C
编写IP选择下拉选,头文件ChooseInterface.h
|
#ifndef #define #include #include class { Q_OBJECT public: explicit QComboBox* QString signals: public void }; #endif |
编写ChooseInterface.cpp
|
#include #include #include ChooseInterface::ChooseInterface(QWidget QDialog(parent) { /* QList<QHostAddress> #if QList<QNetworkInterface> QList<QNetworkAddressEntry> entryList).broadcast() #endif //编写一个下拉选 _comboBox QVBoxLayout* lay->addWidget(_comboBox); foreach(QHostAddress { //将地址都转换成为ipv4的地址 quint32 //的ip if(ipaddr continue; //在comboBox中添加下拉选 _comboBox->addItem(QHostAddress(ipaddr).toString()); } //当下拉选发生变化时的操作 connect(_comboBox, this, } void { this->_strSelect } |
上面的运行结果是:
|
编写TcpServer.h |
|
#ifndef #define #include #include #include #include class { Q_OBJECT public: explicit QTcpServer* QTcpSocket* QTextBrowser* signals: public void void }; #endif |
|
编写TcpServer.cpp |
|
#include #include #include #include #include TcpServer::TcpServer(QWidget QWidget(parent) { // _server ChooseInterface dlg.exec(); //消息提示框 QMessageBox::information(NULL,"you _server->listen(QHostAddress(dlg._strSelect), // connect(_server, this, _show QHBoxLayout* lay->addWidget(_show); } void { // while(_server->hasPendingConnections()) { // _socket _show->append("New // connect(_socket, this, } } void { // while(_socket->bytesAvailable() { _show->append("Data QByteArray _show->append(buf); } } |
|
编写TcpClient.h |
|
#ifndef #define #include #include #include class { Q_OBJECT public: explicit QTcpSocket* QLineEdit* signals: public void }; #endif |
|
编写TcpClient.cpp |
|
#include #include #include TcpClient::TcpClient(QWidget QWidget(parent) { _socket _socket->connectToHost("127.0.0.1", _lineEdit QHBoxLayout* lay->addWidget(_lineEdit); QPushButton* lay->addWidget(button); connect(button, connect(_lineEdit, } void { QString if(strText.isEmpty()) return; _socket->write(strText.toUtf8()); _lineEdit->clear(); } |
|
MyWidget.h |
|
#ifndef #define #include class { Q_OBJECT public: explicit signals: public }; #endif |
|
MyWidget.cpp |
|
#include #include #include #include MyWidget::MyWidget(QWidget QWidget(parent) { } int { QApplication TcpServer TcpClient s.setWindowTitle("server"); c.setWindowTitle("client"); return } |
运行结果:
2
编写UDP程序
|
UDPServer.pro |
|
QT CONFIG HEADERS Udp1.h Udp2.h MyWidget.h SOURCES Udp1.cpp Udp2.cpp MyWidget.cpp |
|
Udp1.h |
|
#ifndef #define #include #include class { Q_OBJECT public: explicit QUdpSocket* signals: public void }; #endif |
|
Udp1.cpp |
|
#include #include #include Udp1::Udp1(QWidget QWidget(parent) { // _udp _udp->bind(10001); connect(_udp, this, // QTimer* timer->setInterval(1000); timer->start(); connect(timer, quint64 QString #if // _udp->writeDatagram(str.toUtf8(), #else // // // _udp->writeDatagram(str.toUtf8(), #endif }); } void { while(_udp->hasPendingDatagrams()) { quint32 QByteArray _udp->readDatagram(buf.data(), qDebug() } } |
|
Udp2.h |
|
#ifndef #define #include #include class { Q_OBJECT public: explicit QUdpSocket* signals: public void }; #endif |
|
Udp2.cpp |
|
#include #include #include #include Udp2::Udp2(QWidget QWidget(parent) { _udp // _udp->bind(QHostAddress::AnyIPv4, // _udp->joinMulticastGroup(QHostAddress("224.0.0.131")); connect(_udp, this, QTimer* timer->setInterval(1000); timer->start(); connect(timer, quint64 QString _udp->writeDatagram(str.toUtf8(), }); } void { while(_udp->hasPendingDatagrams()) { quint32 QByteArray _udp->readDatagram(buf.data(), qDebug() } } |
|
运行结果: 控制台输出结果如下: |
5.关于QT中的网络编程,QTcpSocket,QUdpSocket的更多相关文章
- Qt 多线程和网络编程学习
一,Qt多线程类学习 QThread类,开始一个新的线程就是开始执行重新实现QThread::run(),run()是默认现实调用exec(),QThread::start()开始线程的执行,run( ...
- QT中的SOCKET编程(QT-2.3.2)
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...
- Qt学习之网络编程(一)
一些说明 学了有一段时间的python了,小项目做了不少,最近由于项目需要,所以要回归老本行了,开始重点突击C++和qt.python的网络爬虫系列有时间就更吧. 获取本机网络信息 在网络应用中,经常 ...
- QT中的SOCKET编程
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...
- 网游中的网络编程系列1:UDP vs. TCP
原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...
- 网游中的网络编程3:在UDP上建立虚拟连接
目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...
- 第84节:Java中的网络编程(中)
第84节:Java中的网络编程(中) 实现客户端和服务端的通信: 客户端需要的操作,创建socket,明确地址和端口,进行键盘录入,获取需要的数据,然后将录入的数据发送给服务端,为socket输出流, ...
- 第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
- 第62节:探索Java中的网络编程技术
前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层 ...
随机推荐
- UOJ #206. 【APIO2016】Gap
Description Solution 第一个子任务,直接从 \((a[i],a[j])\) 推出 \((a[i+1],a[j-1])\) 就行了,只需要 \(\frac{N+1}{2}\) 第二个 ...
- 【Codeforces Round 431 (Div. 2) A B C D E五个题】
先给出比赛地址啦,感觉这场比赛思维考察非常灵活而美妙. A. Odds and Ends ·述大意: 输入n(n<=100)表示长度为n的序列,接下来输入这个序列.询问是否可以将序列划 ...
- I/O控制的主要功能
主要功能: 1. 解释用户的I/O系统调用.将用户I/O系统调用转换为I/O控制模块认识的命令模式. 2. 设备驱动.根据得到的I/O命令,启动物理设备完成指定的I/O操作. 3. 中断处理.对 ...
- 笔记3 装配Bean总结
一.自动化装配bean 1.组件扫描 2.自动装配 CompactDisc.java package Autowiring; public interface CompactDisc { void p ...
- javascript面向对象(给对象添加属性和方法的方式)
1.在定义对象时,直接把属性和方法添加 <script type="text/JavaScript"> //给对象直接在定义时添加属性和方法 var g ...
- Linux下打包tar.gz
将heben-addressbookinit打包成heben-addressbookinit.tar.gz格式 方式1:czvf heben-addressbookinit.tar.gz heben- ...
- input text focus去掉默认光影
input:focus { outline:none; }
- Python小代码_7_字符串的字符次数统计
生成包含 1000 个随机字符的字符串,并统计每个字符出现的次数. import string import random #获取字符 x = string.ascii_letters + strin ...
- sessionStorage 、localStorage 和 cookie
localStorage 和 sessionStorage HTML5 提供了两种在客户端存储数据的新方法:localStorage 和 sessionStorage: 两者都是仅在客户端(即浏览器) ...
- fireBug引入JQuery,方便书写jq调试代码
在控制台执行下段代码,等到网络中加载完成后,即可正常运行jq代码.也可以根据需要进行修改引入其他js代码. javascript:(function(url) { var s = document.c ...