Android Native层实现openssl+Socket网络通讯

了解本专题之前默认读者已经具备了一定的NDK编程基础,因此NDK基础知识不在此进行阐述说明。

一、 AndroidStudio编译Openssl库

本文只提供armeabi-v7a以及arm64-v8a静态库文件,文件资源链接如下:Android openssl库文件
资源下载完成后已NDK编程方式放入工程中编译使用。(有积分的可以贡献点积分,也可私信博主获取资源文件哦)

二、Android Natvie实现openssl+Socket网络通讯

1、报文发送

int TCP_GPRS_Send_SSL(unsigned char *ucSendDat, unsigned int uiSendLen) {
   
    LOGD("TCP_GPRS_Send_SSL sdat:%s	slen:%d", ucSendDat, uiSendLen);
    int iRet = 0;

    iRet = SSL_write(psslSSL, ucSendDat, uiSendLen);

    if (iRet == -1) {
   
        LOGD("socket send failed\n");
        return -1;
    }

    if (iRet == (int) uiSendLen) {
   
        iRet = 0;
        LOGD("socket send success\n");
    }
    if (0 != iRet) {
   
        LOGD("SendPacket iRet : %d\n", iRet);
        iRet = ERR_SOCKET_SEND_DATA;
    }
    return iRet;
}

2、报文接收

int TCP_GPRS_Recv_SSL(unsigned char *ucRecvBuff, unsigned int *uiRecvLen) {
   
    int iRet = 0;
    unsigned int len = 0;
    unsigned int len2 = 0;
    unsigned char ucDat[8192] = "\0";
    unsigned int tmpLen = 0;
    unsigned long ulStart = 0;

    int ret;
    struct timeval timeout = {
   10, 0};
    fd_set rfds;
    FD_ZERO(&rfds);
    FD_SET(conn_fd, &rfds);

    LOGD("conn_fd---->%d", conn_fd);

    ulStart = GetTickCount();

    LOGD("ulStart------->%d", ulStart);


    do 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值