Qt for android 中使用socket.io

本文记录了自己在Qt for android环境下socket.io环境配置的过程,至于Qt  for android的环境搭建,网上可以找到很多相关文章,这里我也记录一个自己使用的博文:https://blog.csdn.net/sxy445566/article/details/55505674

下面开始Socket.io的搭建:

1.下载QtSocketIo代码:https://download.csdn.net/download/lchlgd/10279644,感谢这位朋友的无私奉献。

2.下载Socket.io依赖库:

boost:https://blog.csdn.net/lj402159806/article/details/76769836,文章里给出了boost的官网下载地址,按照文章内容编译后,就得到了boost的库文件。

websocket++:https://github.com/zaphoyd/websocketpp,我们第一步下载的代码中已经包含了此项,所以可以不单独下载。

3.打开第一步下载的代码中的QtSocketIo-client工程,在pro文件中增加boost库:

LIBS    +=/usr/android/boost/boost_1_67_0/android_build/lib/libboost_system.a  \
            /usr/android/boost/boost_1_67_0/android_build/lib/libboost_date_time.a  \
            /usr/android/boost/boost_1_67_0/android_build/lib/libboost_atomic.a  \
            /usr/android/boost/boost_1_67_0/android_build/lib/libboost_random.a  \

注意:将路径修改为自己的环境路径,同时将pro文件中的INCLUDEPATH路径也修该为自己的环境路径。

编译QtSocketIo-client工程,我这里遇到的问题:

a. error: 'epoll_create1' was not declared in this scope,解决办法就是将'epoll_create1' 修改为'epoll_create' 即可。

b. SocketIOClient.cpp中使用了WIN32宏定义,我的是ubuntu所以将其屏蔽:(绿色部分为屏蔽内容)

//#ifdef WIN32
#define BIND_EVENT(IO,EV,FN) \
    do{ \
        socket::event_listener_aux l = FN;\
        IO->on(EV,l);\
    } while(0)

//#else
//#endif

        到这里,我们就可以通过Socket.io与服务器通信了^_^,内容也是东拼西凑的完成的,作为备忘同时也希望可以帮到有同样需求的朋友。

 

Qt for Android 是一套让Qt应用程序能在Android设备上运行的工具和库。在Qt for Android使用Socket进行网络编程是一个常见的需求,这允许应用程序通过网络进行数据传输。 Qt提供了跨平台的网络通信类,如`QTcpSocket`用于TCP协议通信,`QUdpSocket`用于UDP协议通信。开发者可以利用这些类在Qt应用程序实现客户端或服务器端的网络通信。在Qt for Android使用Socket的步骤与在其他平台(如Windows、Linux等)上的使用基本相同,但需要考虑Android特有的网络权限和配置。 例如,要在Android应用使用网络通信,需要在应用的`AndroidManifest.xml`文件添加相应的网络权限声明。以下是一个简单的TCP客户端使用`QTcpSocket`的示例: ```cpp QTcpSocket socket; // 连接到服务器 socket.connectToHost("服务器IP", 端口号); // 连接成功或失败时发出的信号 QObject::connect(&socket, &QTcpSocket::connected, [](){ qDebug() << "连接成功"; }); QObject::connect(&socket, &QTcpSocket::errorOccurred, [](QAbstractSocket::SocketError socketError){ qDebug() << "连接失败:" << socketError; }); // 读取数据时发出的信号 QObject::connect(&socket, &QTcpSocket::readyRead, [](){ QByteArray data = socket.readAll(); qDebug() << "接收到的数据:" << data; }); // 发送数据 socket.write("要发送的数据"); ``` 在实际的Android项目,还需要处理Android的生命周期事件,确保Socket在应用暂停或销毁时能够正确关闭,并处理好权限和网络安全等问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值