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进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...
随机推荐
- SQL速记
集合操作 WITH a AS ( SELECT 1 id UNION SELECT 2 ), b AS ( SELECT 1 id UNION SELECT 3 ) SELECT * FR ...
- apache 虚拟ip
参考 http://blog.sina.com.cn/s/blog_5d8ca1e90100hnpv.html <VirtualHost 127.0.0.1:80> Docume ...
- symfony2 controller
1.基本概念 一次http请求 输入(Request):header信息.get信息.post数据等 输出(Response):symfony经过处理返回的信息,包括页面.json字符串.URL ...
- [在线] html 转 pdf
http://www.htm2pdf.co.uk/
- 关于JS变量提升的一些坑
function log(str) { // 本篇文章所有的打印都将调用此方法 console.log(str); } 函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 变量声明.命名 ...
- Mongodb Manual阅读笔记:CH6 聚合
6 聚合 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- Use Excel Pivot Table as a BI tool
Normally, we have created a table, view in database or cube in SSAS, user can use Excel as a BI tool ...
- Rac grid用户启停监听报错无权限
[grid@max1 ~]$ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 04-NOV-2016 00:20: ...
- Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
今天玩BCP导入数据的时候,有文件格式,有中文字符串问题……以下是历程,和大家分享一下,希望不要走我的弯路 主要那个表是一个翻译表,一个文件里面内涵几十种语言,所以很容易发现问题. 0.使用最常用的语 ...
- android-xxxx must implement the inherited abstract method报错
public class ContactMainFragment extends Fragment implements OnClickListener { 提示:ContactMainFragmen ...