#include "tcpclientwidget.h"
#include "ui_tcpclientwidget.h"
TcpClientWidget::TcpClientWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::TcpClientWidget)
{
ui->setupUi(this);
ui->sendlineEdit->setEnabled(false);
ui->sendpushButton->setEnabled(false);
isConnected=0;
}
TcpClientWidget::~TcpClientWidget()
{
delete ui;
}
void TcpClientWidget::on_ConnectpushButton_clicked()
{
if(!isConnected)
{
if(ui->iplineEdit->text().isEmpty()
||ui->portlineEdit->text().isEmpty())
{
QMessageBox::critical(this,NULL,"Please input IP or PORT!");
return;
}
QString hostAddrStr=ui->iplineEdit->text();
quint16 hostPort=ui->portlineEdit->text().toShort();
socket = new QTcpSocket;
connect(socket,SIGNAL(connected()),this,SLOT(slotConnect()));
connect(socket,SIGNAL(disconnected()),this,SLOT(slotDisconnect()));
connect(socket,SIGNAL(readyRead()),this,SLOT(slotReadyRead()));
connect(socket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(slotError(QAbstractSocket::SocketError)));
connect(socket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),
this,SLOT(stateChanged(QAbstractSocket::SocketState)));
qDebug() << "before connect";
socket->connectToHost(QHostAddress(hostAddrStr),hostPort);
socket->waitForConnected(3000);//1.(8)等待10s钟的时间等待连接
qDebug() << "after connect";
}
else
{
socket->disconnectFromHost();
}
}
void TcpClientWidget::slotConnect()
{
isConnected = 1;
ui->ConnectpushButton->setText("Disconnect");
ui->iplineEdit->setEnabled(false);
ui->portlineEdit->setEnabled(false);
ui->sendlineEdit->setEnabled(true);
ui->sendpushButton->setEnabled(true);
}
void TcpClientWidget::slotDisconnect()
{
isConnected = 0;
ui->ConnectpushButton->setText("Connect");
ui->iplineEdit->setEnabled(true);
ui->portlineEdit->setEnabled(true);
ui->sendlineEdit->setEnabled(false);
ui->sendpushButton->setEnabled(false);
}
void TcpClientWidget::on_sendpushButton_clicked()
{
if(!ui->sendlineEdit->text().isEmpty())
{
QTextStream out(socket);
out << ui->sendlineEdit->text();
ui->sendlineEdit->setText("");
}
}
void TcpClientWidget::slotReadyRead()
{
if(socket->bytesAvailable()>0)
{
QTextStream in(socket);
QString msg;
in >> msg;
qDebug() << msg;
ui->listWidget->addItem(msg);
}
}
//发送数据:#user#123#我是好人#ip#12345335
void TcpClientWidget::slotError(QAbstractSocket::SocketError socketError)
{
qDebug() << socketError;
}
void TcpClientWidget::stateChanged(QAbstractSocket::SocketState socketState)
{
qDebug() << socketState;
}
基于QT简单客户端与服务器
需积分: 31 84 浏览量
2017-10-10
21:17:07
上传
评论
收藏 10KB RAR 举报
流水段
- 粉丝: 17
- 资源: 11
最新资源
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
- FirstFilterOrderCompare
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈