#include "widget.h"#include"ui_widget.h"#include#include#include#include#include#include#include#include"tcpserver.h"#include"tcpclient.h"#includeWidget::Widget(QWidget*parent) :
QWidget(parent),
ui(newUi::Widget)
{
ui->setupUi(this);
udpSocket= new QUdpSocket(this);
port= 45454;
udpSocket->bind(port, QUdpSocket::ShareAddress |QUdpSocket::ReuseAddressHint);
connect(udpSocket, SIGNAL(readyRead()),this, SLOT(processPendingDatagrams()));
sendMessage(NewParticipant);//TcpServer是tcpserver.ui对应的类,上面直接用QUdpSocket是因为没有单独的udpserver.ui类
server = new TcpServer(this);//sendFileName()函数一发送,则触发槽函数getFileName()
connect(server, SIGNAL(sendFileName(QString)), this, SLOT(getFileName(QString)));
}
Widget::~Widget()
{
delete ui;
}//使用UDP广播发送信息
voidWidget::sendMessage(MessageType type, QString serverAddress)
{
QByteArray data;
QDataStreamout(&data, QIODevice::WriteOnly);
QString localHostName=QHostInfo::localHostName();
QString address=getIP();out << type << getUserName() <
{caseMessage :if (ui->messageTextEdit->toPlainText() == "") {
QMessageBox::warning(0,tr("警告"),tr("发送内容不能为空"),QMessageBox::Ok);return;
}out << address <
ui->messageBrowser->verticalScrollBar()->setValue(ui->messageBrowser->verticalScrollBar()->maximum());break;caseNewParticipant