qt通过tcp与java通信_QT之TCP通信

QT中可以通过TCP协议让服务器和客户端之间行通信。所以下面我就围绕服务器和客户端来写。

这是我们写服务器和客户端的具体流程:

A、服务器:

1.创建QTcpServer对象

2.启动服务器(监听)调用成员方法listen(QHostAddress::Any,端口号)

3.当有客户端链接时候会发送newConnection信号,触发槽函数接受链接(得到一个与客户端通信的套接字QTcpSocket)

4.QTcpsocket发送数据用成员方法write,

5.读数据当客户端有数据来,QTcpSocket对象就会发送readyRead信号,关联槽函数读取数据

B、客户端:

1.创建QTcpSocket对象

2.链接服务器connectToHost(QHostAddress("ip"),端口号)

3.QTcpsocket发送数据用成员方法write,

4.读数据当对方有数据来,QTcpSocket对象就会发送readyRead信号,关联槽函数读取数据

我们需要调用到的头文件有两个:

#include #include

我们先要在工程文件中加入network

QT += core gui network

下面我们来看看服务器程序步骤:

1、初始化服务器server对象

mServer = new QTcpServer();

2、启动监听服务器

mServer->listen(QHostAddress::Any,9988);//9988为端口号

3、当有客户端链接时候会发送newConnection信号,触发槽函数接受链接(得到一个与客户端通信的套接字QTcpSocket)

connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client()));

mSocket= mServer->nextPendingConnection();//与客户端通信的套接字

4、发送数据

mSocket->write(msg.toUtf8());

5、读数据当客户端有数据来,QTcpSocket对象就会发送readyRead信号,关联槽函数读取数据

connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));

6、连接多个客户端

//可以实现同时读取多个客户端发送过来的消息

QTcpSocket *obj = (QTcpSocket*)sender();

7、检测掉线

connect(mSocket,SIGNAL(disconnected()),this,SLOT(client_dis())); //检测掉线信号

下面是服务器的实现的具体代码:

1 #include "tcpserver.h"

2 #include "ui_tcpserver.h"

3 #include

4 TcpServer::TcpServer(QWidget *parent) :5 QMainWindow(parent),6 ui(newUi::TcpServer)7 {8 ui->setupUi(this);9 //初始化服务器server对象

10 mServer = newQTcpServer();11 //关联客户端连接信号newConnection

12 connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); //连接客户端13 //启动服务器监听

14 mServer->listen(QHostAddress::Any,9988);15

16 }17

18 TcpServer::~TcpServer()19 {20 deleteui;21 }22

23 voidTcpServer::new_client()24 {25 qDebug()<nextPendingConnection();//与客户端通信的套接字27 //关联接收客户端数据信号readyRead信号(客户端有数据就会发readyRead信号)

28 connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));29 //检测掉线信号

30 connect(mSocket,SIGNAL(disconnected()),this,SLOT(client_dis()));31

32 }33

34 voidTcpServer::read_client_data()35 {36 //可以实现同时读取多个客户端发送过来的消息

37 QTcpSocket *obj = (QTcpSocket*)sender();38 QString msg = obj->readAll();39 qDebug()<

42 voidTcpServer::client_dis()43 {44 QTcpSocket *obj = (QTcpSocket*)sender();//掉线对象

45 qDebug()<peerAddress().toString();//打印出掉线对象的ip

46 }

说完服务器那我们继续来看看客户端是怎么实现的:

1、创建QTcpSocket对象

mSocket = new QTcpSocket();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值