QT 网络编程二(UDP版本)
QT的UdpSocket接收消息使用原则
第一步:new一个UdpSocket
第二步:调用UdpSocket的bind方法,同时指定端口号
第三步:使用connect将接收消息函数和UdpSocket对象做关联
第四步:在接受消息槽函数当中调用readDatagram接收消息
接收消息
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QUdpSocket> class Widget : public QWidget
{
Q_OBJECT public:
Widget(QWidget *parent = );
~Widget();
void mydatasend();
private:
QUdpSocket *udpsocket;
private slots:
void mydatarecv();
}; #endif // WIDGET_H
#include "widget.h"
#include <QHostAddress>
#include <QMessageBox> Widget::Widget(QWidget *parent)
: QWidget(parent)
{
udpsocket=new QUdpSocket(this);
/*指定绑定端口号,接收消息必须绑定端口号,发送消息则不需要绑定*/
udpsocket->bind();
/*取消绑定端口号使用:udpsocket->close()方法*/
/*readyRead()表示有消息到来这个信号*/
connect(udpsocket,SIGNAL(readyRead()),this,SLOT(mydatarecv()));
} void Widget::mydatarecv()
{
char buf[]={};
/*判断是否有消息*/
while(udpsocket->hasPendingDatagrams())
{
udpsocket->readDatagram(buf,sizeof(buf));
QMessageBox::information(this,"消息",buf);
memset(buf,,sizeof(buf));
}
} void Widget::mydatasend()
{
//
} Widget::~Widget()
{ }
发送消息
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QUdpSocket>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel> class Widget : public QWidget
{
Q_OBJECT public:
Widget(QWidget *parent = );
~Widget();
private:
QUdpSocket *udpsocket;
QPushButton *btn1;
QLineEdit *edit1;
QLineEdit *edit2;
QLabel *label1;
void mysenddata();
private slots:
void btn_click();
}; #endif // WIDGET_H
#include "widget.h"
#include <QHostAddress>
#include <QGridLayout>
#include <QMessageBox> Widget::Widget(QWidget *parent)
: QWidget(parent)
{
udpsocket=new QUdpSocket(this);
btn1=new QPushButton(tr("点击"));
edit1=new QLineEdit();
edit2=new QLineEdit();
label1=new QLabel(tr("目标IP"));
QGridLayout *lay1=new QGridLayout(this);
lay1->addWidget(btn1,,);
lay1->addWidget(edit1,,);
lay1->addWidget(edit2,,);
lay1->addWidget(label1,,);
connect(btn1,SIGNAL(clicked()),this,SLOT(btn_click()));
} Widget::~Widget()
{ } void Widget::btn_click()
{
mysenddata();
} void Widget::mysenddata()
{
QString stext=edit1->text();
QHostAddress *serverip=new QHostAddress();
//获取目标IP地址
QString ipstr=edit2->text();
if(ipstr.isEmpty())
{
QMessageBox::critical(this,"错误信息","ip地址不可以为空!");
return;
}
serverip->setAddress(ipstr);
char buf[]={};
strncpy(buf,stext.toStdString().data(),sizeof(buf));
udpsocket->writeDatagram(buf,strlen(buf),*serverip,);
delete serverip;
edit1->clear();
}

QT 网络编程二(UDP版本)的更多相关文章
- Qt网络编程QTcpServer和QTcpSocket的理解
前一段时间通过调试Qt源码,大致了解了Qt的事件机制.信号槽机制.毕竟能力和时间有限.有些地方理解的并不是很清楚. 开发环境:Linux((fedora 17),Qt版本(qt-everywhere- ...
- Linux网络编程(二)
Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...
- 网络编程 单纯UDP通信
网络编程 单纯UDP通信 1,UDP发送端 2,UDP接收端 UDP发送端: #include <stdio.h> #include <unistd.h> #include & ...
- java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式)
java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式) * TCP* 特点:面向连接,点对点的通信,效率较低,但安全可靠* UDP:用户数据报协议,类似 ...
- iOS 网络编程 TCP/UDP HTTP
一.HTTP协议的主要特点: 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由Content-Type加以标记 4 ...
- C#网络编程二:Socket编程
一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...
- Linux 网络编程二(Socket创建)
TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...
- TCP/IP协议网络编程以及UDP和TCP之传输协议
1.什么是TCP/IP协议? 网络编程协议有很多,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal 传输控制协议/英特网 ...
- Java网络编程二:Socket详解
Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...
随机推荐
- jQuery删除节点和追加节点
for (var i in checkedBoxIds) { var $td = $("#" + checkedBoxIds[i]).parent().parent().detac ...
- mysql GROUP BY 与 ORDER BY 查询不是最新记录
转载:http://blog.csdn.net/qvbfndcwy/article/details/7200910 鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,( ...
- js confirm函数 删除提示
<a href="del.php" onclick="return confirm('是否将此留言信息删除?')">删除留言</a>
- mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)
随着mysql的长期使用,可以修复表来优化,优化时减少磁盘占用空间.方便备份. REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化 ...
- Apache虚拟主机配置
在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...
- jq+css+html简单实现导航下拉菜单
相信导航栏下拉菜单是web开发最常见的一个item了.这里就不做介绍了,直接上code. Html部分 <div class="_nav"> <ul id=&qu ...
- SQL SERVER 并发【2015.12.16】
并发控制模型 1.悲观并发控制: A.默认冲突存在,当前进程通过获取当前数据的锁阻止其他进程的访问. B.读与写之间是相互阻塞. 2.乐观并发控制: A.使用行版本控制保持数据被操作前的状态. B ...
- subversion-1.8.5 windows install dist
python build\win32\make_dist.py subversion-1.8.5 d:/rapm
- Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
- BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MBSubmit: 3785 Solved: 1747[Submit][Statu ...