使用UDP套接字实现简单的通信
来源:互联网 发布:锋云搜歌文件 生成软件 编辑:程序博客网 时间:2024/06/05 19:31
先看下效果图:
server端,只能接收数据:http://blog.chinaunix.net/photo/116111_101004192628.jpg
client端,发送数据,并显示在上面的text中:
http://blog.chinaunix.net/photo/116111_101004192710.jpg
代码实现:
server端代码:
server::server(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::server)
{
ui->setupUi(this);
QMainWindow(parent),
ui(new Ui::server)
{
ui->setupUi(this);
this->setWindowTitle("QQ2011-UDP");
//绑定套接字
udpSocket = new QUdpSocket;
udpSocket->bind(QHostAddress("219.229.140.239"), 8888);
QObject::connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processReadData()));
}
udpSocket->bind(QHostAddress("219.229.140.239"), 8888);
QObject::connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processReadData()));
}
server::~server()
{
delete ui;
}
{
delete ui;
}
void server::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
//socket有数据可读时触发的槽函数
void server::processReadData()
{
time = QDateTime(QDateTime::currentDateTime());
QString timeString = time.toString("hh:mm:ss");
ui->messagetextEdit->append(timeString);
{
time = QDateTime(QDateTime::currentDateTime());
QString timeString = time.toString("hh:mm:ss");
ui->messagetextEdit->append(timeString);
qint64 size = udpSocket->pendingDatagramSize();
qDebug()<<"size = " <<size;
char data[size];
udpSocket->readDatagram(data, size, 0, 0);
QByteArray array(data, size);
QString datastring(array);
ui->messagetextEdit->append(datastring);
}
client端代码:
qDebug()<<"size = " <<size;
char data[size];
udpSocket->readDatagram(data, size, 0, 0);
QByteArray array(data, size);
QString datastring(array);
ui->messagetextEdit->append(datastring);
}
client端代码:
client::client(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::client)
{
ui->setupUi(this);
QMainWindow(parent),
ui(new Ui::client)
{
ui->setupUi(this);
this->setWindowTitle("QQ2011-UDP");
//绑定套接字
udpSocket = new QUdpSocket;
udpSocket->bind(QHostAddress("219.229.140.239"), 9999);
}
udpSocket->bind(QHostAddress("219.229.140.239"), 9999);
}
client::~client()
{
delete ui;
}
{
delete ui;
}
void client::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
//send按钮槽函数
void client::on_sendButton_clicked()
{
this->processSendMessage();
}
{
this->processSendMessage();
}
//message发送的处理函数
void client::processSendMessage()
{
if (ui->sendMessagetextEdit->toPlainText().isEmpty() == false)
{
time = QDateTime(QDateTime::currentDateTime());
QString timeString = time.toString("hh:mm:ss");
ui->messagetextEdit->append(timeString);
{
if (ui->sendMessagetextEdit->toPlainText().isEmpty() == false)
{
time = QDateTime(QDateTime::currentDateTime());
QString timeString = time.toString("hh:mm:ss");
ui->messagetextEdit->append(timeString);
QString senderName = "farsight:\n";
QByteArray arrayData((senderName + ui->sendMessagetextEdit->toPlainText()).toAscii());
udpSocket->writeDatagram(arrayData, QHostAddress("219.229.140.239"), 8888);
QString datastring(ui->sendMessagetextEdit->toPlainText());
qDebug()<<"size" <<arrayData.size();
ui->messagetextEdit->append(datastring);
ui->sendMessagetextEdit->clear();
}
else
{
QMessageBox::information(this, "ERROR Message", "please input message to send");
}
}
QByteArray arrayData((senderName + ui->sendMessagetextEdit->toPlainText()).toAscii());
udpSocket->writeDatagram(arrayData, QHostAddress("219.229.140.239"), 8888);
QString datastring(ui->sendMessagetextEdit->toPlainText());
qDebug()<<"size" <<arrayData.size();
ui->messagetextEdit->append(datastring);
ui->sendMessagetextEdit->clear();
}
else
{
QMessageBox::information(this, "ERROR Message", "please input message to send");
}
}
- 使用UDP套接字实现简单的通信
- 简单的,使用套接字实UDP通信(循环服务器)
- 用套接字实现UDP通信
- 简单的,使用套接字实现TCP通信(用线程实现并发)
- 简单的,使用套接字进行TCP通信(使用进程实现并发)。
- 【网络编程】使用流式套接字实现简单的客户端/服务端通信过程
- 使用流式套接字实现简单的客户端/服务端通信过程
- 基于TCP套接字实现简单的通信
- 使用UDP套接字实现广播消息
- 计算机网络:UDP套接字通信
- 利用套接字实现UDP 通信 小测
- 关于使用UDP套接字进行本地进程通信
- UDP套接字的java实现
- C++使用socket套接字的通信编程实现
- UDP套接字的使用介绍
- 简单套接字通信
- TCP/UDP的套接字Socket通信工作流程
- 使用套接字实现广播通信
- MINA2.0用户手册中文版--第一章 MINA2.0入门
- 如何为可执行程序添加resource文件
- 使用listWidget类显示当前目录下文件列表
- QT实现对sqlite数据库的操作
- QT中使用定时器来截图
- 使用UDP套接字实现简单的通信
- 基于TCP套接字实现简单的通信
- 实现简单的网页浏览
- QT中一些常用的类
- 解决s3c2410触摸屏偏移问题
- u-boot链接文件u-boot.lds分析
- uboot第一阶段代码概要分析
- 巧用C语言中预处理
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH