1、QT提供了QTcpSocket類,可以直接實例化一個客戶端。需要在pro文件中添加 QT += network
2、連接服務端
connect(connectbutton,SIGNAL(clicked()),this,SLOT(on_connect_cliked()));
void MyDialog::on_connect_cliked(){
if(connectbutton->text()=="連接")
{
m_socket->connectToHost("192.168.0.103",8899,QTcpSocket::ReadWrite);
if(!m_socket->waitForConnected())
{
qDebug()<<"client connect error";
}
else{
qDebug()<<"已連接上";
connectbutton->setText("斷開");
}
}
else
{
m_socket->disconnectFromHost();
if(m_socket->state()==QAbstractSocket::UnconnectedState
|| m_socket->waitForDisconnected(1000))
{
qDebug()<<"已斷開";
connectbutton->setText("連接");
}
}
}
3、接受服務端發來的數據
QTimer *timer = new QTimer;
connect(timer,SIGNAL(timeout()),this,SLOT(receive_repeat()));
timer->start(1);
void MyDialog::readData(){
QByteArray buffer = m_socket->readAll();
if(!buffer.isEmpty())
{
receivee.append(buffer);
qDebug()<<"添加了數據";
}
}
4、給服務端發送數據
connect(sendbutton,SIGNAL(clicked()),this,SLOT(send_msg()));
void MyDialog::send_msg(){
QString data = sendtext->toPlainText();
if(data != "")
{
// qDebug()<<"mydialog sendtext2"<<data;
m_socket->write(data.toLatin1());
}
}