简介
通过TCP使PC和android手机相互通讯。
准备
使用QT的网络模块
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
.h
定义TCP接口
#include <QTcpSocket>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void socket_ReadData();
void socket_Disconnected();
private:
Ui::MainWindow *ui;
QTcpSocket *socket;
};
.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
socket = new QTcpSocket();
//连接信号槽
QObject::connect(socket, &QTcpSocket::readyRead, this, &MainWindow::socket_Read_Data);
QObject::connect(socket, &QTcpSocket::disconnected, this, &MainWindow::socket_Disconnected);
}
void tcpDemo(bool isConnect, QString IP,int port)
{
//获取IP地址: IP
//获取端口号: port
if(isConnect)
{
//取消已有的连接
socket->abort();
//连接服务器
socket->connectToHost(IP, port);
//等待连接成功
if(!socket->waitForConnected(30000))
{
qDebug() << "Connection failed!";
return;
}
qDebug() << "Connect successfully!";)
}
else
{
//断开连接
socket->disconnectFromHost();
}
}
发送TCP数据
void Send_data(QString data)
{
//获取文本框内容并以ASCII码形式发送
socket->write(data).toLatin1());
socket->flush();
}
读取TCP数据
void MainWindow::socket_ReadData()
{
QByteArray buffer;
//读取缓冲区数据
buffer = socket->readAll();
if(!buffer.isEmpty())
{
//读取TCP数据
QString str = ui->textEdit_Recv->toPlainText();
str+=tr(buffer);
//str数据处理
//。。。
}
}
void MainWindow::socket_Disconnected()
{
qDebug() << "Disconnected!";
}
效果大致如下
和IP为192.168.1.101 端口为8765的PC服务端进行通讯。