#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
#include <QDebug>
#include <QTime>
#include <QKeyEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->resize(450,300);
this->setWindowTitle("服务器端口:8888");
udpSocket = new QUdpSocket(this);
//绑定端口号
udpSocket->bind(8888);
//udpSocket->bind(QHostAddress::AnyIPv4,8888); //必须是主机的ipv4类通信方式,以及本机的ip地址
/*组播方式
//加入某个组播,并且组播是D类地址
//udpSocket->joinMulticastGroup(QHostAddress("192,168,1,144"));
//离开某个组播方式
//udpScoket->leaveMulticastGroup();
*/
//当对方发送数据过来。自动触发readyRead()
connect(udpSocket,&QUdpSocket::readyRead,this,&Widget::dealMsg);
ui->ButtonSend->setFocus();
ui->ButtonSend->setDefault(true);
ui->textEditShow->installEventFilter(this);//设置完后自动调用其eventFilter函数
}
Widget::~Widget()
{
delete ui;
}
void Widget::dealMsg()
{
//读取对方发送的内容
char buf[1024] = {0}; //内容
QHostAddress cliAddr; //对方地址
quint16 port; //对方端口
qint64 len = udpSocket->readDatagram(buf,sizeof(buf),&cliAddr,&port);
QTime cur_time = QTime::currentTime();
QString time_info = cur_time.toString("hh:mm:ss");
if(len >0)
{
//获取到文本格式化 [192.168.1.1 : 8888]aaaa
QString str = QString("[%1:%2] %3 [%4]")
.arg(cliAddr.toString())
.arg(port)
.arg(buf)
.arg(time_info);
//ui->textEditShow->setText(str);
ui->textEditShow->append(str);
}
}
bool Widget::eventFilter(QObject *target, QEvent *event)
{
if(target == ui->textEditShow)
{
if(event->type() == QEvent::KeyPress)//回车键
{
QKeyEvent *k = static_cast<QKeyEvent *>(event);
if(k->key() == Qt::Key_Return)
{
on_ButtonSend_clicked();
return true;
}
}
}
return QWidget::eventFilter(target,event);
}
void Widget::on_ButtonSend_clicked()
{
//获取对方的ip和端口
QString ip = ui->lineEditIp->text();
qint16 port = ui->lineEditPort->text().toInt();
//获取编辑区内容
QString str = ui->textEditShow->toPlainText();
//给指定的ip发送数据
udpSocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);
ui->textEditShow->clear();
}
void Widget::on_ButtonClose_clicked()
{
udpSocket->disconnectFromHost();
udpSocket->close();
qDebug() << "主服务器连接断开!";
this->close();
}

Freedom_Bule
- 粉丝: 327
最新资源
- 【Android应用源码】音乐播放器videoplayer.zip
- 【Android应用源码】音乐播放器-.zip
- 【Android应用源码】音乐播放器源码.zip
- MAE154A_UAVDesign-master.zip
- Trabalho_SCM_Drone_UAV-main.zip
- UAV-control-and-path-planning-main.zip
- 基于动量的估计器无人机.zip
- 带有 matlab 的小型卸载飞机书示例模型.zip
- 多架无人机(在 MATLAB 中模拟)的容错和无碰撞区域覆盖系统。.zip
- 基于多任务的多目标海鞘群算法(MTMMA)用于无人机视觉覆盖.zip
- 具有基线结果的无人机路径规划多目标基准的源代码.zip
- 激光雷达和光谱传感器在桉树属遗传改良实验自动评估中的潜在应用的调查”。.zip
- N通道MOS管Si2301产品介绍
- devops实战模型.zip
- 【Android应用源码】音量seekbar制作.zip
- 【Android应用源码】银联支付Demo.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


