21,441
社区成员




#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<qfile.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
server = new QTcpServer();
connect(server,&QTcpServer::newConnection,this,&MainWindow::server_New_Connect);
int port = 5007;
if(!server->listen(QHostAddress::Any,port))
{
ui->label_listen->setText("Cant listen");
qDebug()<<server->errorString();
return;
}
}
MainWindow::~MainWindow()
{
server->close();
server->deleteLater();
delete ui;
}
void MainWindow::server_New_Connect()
{
socket=server->nextPendingConnection();
QObject::connect(socket,&QTcpSocket::readyRead,this,&MainWindow::socket_Read_Data);
//做了connect,但是当硬件断开的时候不能触发。
QObject::connect(socket, &QTcpSocket::disconnected, this, &MainWindow::socket_Disconnected);
ui->pushButton_send->setEnabled(true);
ui->label->setText("new Connection");
qDebug() << "new Connection";
}
void MainWindow::socket_Read_Data()
{
//里边做了一些数据处理
socket->write("0123423415343245");
socket->flush();
}
void MainWindow::socket_Disconnected()
{
//不会被调用
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<qfile.h>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
server = new QTcpServer();
connect(server,&QTcpServer::newConnection,this,&MainWindow::server_New_Connect);
int port = 5007;
if(!server->listen(QHostAddress::Any,port))
{
ui->label_listen->setText("Cant listen");
qDebug()<<server->errorString();
return;
}
ui->label_listen->setText("Listening");
}
MainWindow::~MainWindow()
{
server->close();
server->deleteLater();
delete ui;
}
void MainWindow::server_New_Connect()
{
socket=server->nextPendingConnection();
QObject::connect(socket,&QTcpSocket::readyRead,this,&MainWindow::socket_Read_Data);
QObject::connect(socket, &QTcpSocket::disconnected, this, &MainWindow::socket_Disconnected);
ui->pushButton_send->setEnabled(true);
ui->label->setText("new Connection");
qDebug() << "new Connection";
// I set a timer to print socket state every one second.
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MainWindow::Psocket);
timer->setInterval(1000);
timer->start(1000);
}
void MainWindow::socket_Read_Data()
{
//ignore
//write改短了以后竟然第二个设备也能检测到断开了
socket->write("01234");
socket->flush();
}
void MainWindow::socket_Disconnected()
{
//can be called
}
void MainWindow::Psocket()
{
//I think the write("test") do something because when I delete the write, it does not work again
qDebug()<<socket->state();
}