iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android NDK中socket的用法以及注意事项分析
  • 554
分享到

Android NDK中socket的用法以及注意事项分析

ndksocketAndroid 2022-06-06 10:06:56 554人浏览 泡泡鱼
摘要

Android NDK中使用Socket的整个过程分为以下几部分:第一部分: 创建socket并绑定IP和端口 代码如下:#include <sys/select

Android NDK中使用Socket的整个过程分为以下几部分:
第一部分: 创建socket并绑定IP和端口
代码如下:
#include <sys/select.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define MAX_DATA_BUF_LEN 10240
int sd = INVALID_SOCKET;
sockaddr_in addr_org;  // 发送端地址
sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);  // 创建socket
addr_org.sin_family = AF_INET;
addr_org.sin_addr.s_addr = inet_addr("192.128.0.1");  // 发送端IP
addr_org.sin_port = htons(8080);  // 发送端端口
bind(sd, (struct sockaddr *)&(addr_org), sizeof(struct sockaddr_in));  // 绑定IP和端口

第二部分: 发送数据
代码如下:
sockaddr_in addr_dst;  // 接收端地址
addr_dst.sin_family = AF_INET;
addr_dst.sin_addr.s_addr = inet_addr("192.128.0.2");  // 接收端IP
addr_dst.sin_port = htons(8080);  // 接收端端口
... // 生成要发送的数据到SendDataBuff, 长度为ulLen
sendto(sd, SendDataBuff, ulLen, 0, (struct sockaddr *)&(addr_dst), sizeof(sockaddr_in));  // 发送SendDataBuff中的数据

第三部分: 在线程中接收数据(非阻塞式)
代码如下:
void *SocketReceiveThread(void *pParam)
{
    fd_set fdset;
    struct timeval delayval;
    unsigned long lRetVal;
    delayval.tv_sec  = 0;
    delayval.tv_usec = 5000;   
    while (!end_flag)
    {
        FD_ZERO(&fdset);
        FD_SET(sd, &fdset);
        lRetVal = select(sd+1, &fdset, NULL, NULL, &delayval); // 尤其要注意第一个参数
        if (0 == lRetVal)
        {
            continue;
        }
        else if (SOCKET_ERROR == lRetVal)
        {
            break;
        }
        else if (FD_ISSET(sd, &fdset) != 0)
        {
            char RecvDataBuff[MAX_DATA_BUF_LEN];  // 接收数据buffer
            unsigned long ulLen = recvfrom(sd, RecvDataBuff, MAX_DATA_BUF_LEN, 0, NULL, NULL);
            ... // 处理接收到的数据
        }
    }
}

第四部分: 关闭socket
close(sd);
您可能感兴趣的文章:Android Studio 导入开源项目的正确姿势及注意事项Android Studio3.0升级后使用注意事项及解决方法Android 程序执行linux命令的解决方法及注意事项将Eclipse工程转Android Studio工程的步骤与注意事项AndroidStudio升级到3.0的新特性和注意事项小结详解Android Service 使用时的注意事项Android 中ViewPager中使用WEBView的注意事项Android TimerTask 的简单应用及注意事项Android 如何使用log4j及注意事项Android集成百度地图开发流程和注意事项Android onNewIntent()触发机制及注意事项Android Studio添加第三方库的注意事项Android 程序申请权限注意事项Android Service自启动注意事项分析关于Android WebView的loadData方法的注意事项分析Android生存指南之:开发中的注意事项Android 编程下字库的使用及注意事项60条Android开发注意事项与经验总结


--结束END--

本文标题: Android NDK中socket的用法以及注意事项分析

本文链接: https://www.lsjlt.com/news/27506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP析构方法的名称用法及注意事项
    PHP中的析构方法指的是在对象被销毁时自动调用的方法,用来进行一些清理工作,比如释放资源或关闭数据库连接。本文将介绍PHP析构方法的名称、用法以及需要注意的事项,并附上具体的代码示例。...
    99+
    2024-04-02
  • Android  TimerTask 的简单应用及注意事项
    Android  TimerTask 的简单应用及注意事项Android应用开发中常常会用到定时器,不可避免的需要用到 TimerTask 定时器任务这个类下面简单的一个示例演示了如何使用TimerTask这个示例演示了3秒未有触...
    99+
    2023-05-31
    android timertask tim
  • Vue中的组件注册方法及注意事项
    目录Vue组件的基本概念Vue组件的注册全局注册局部注册如何使用Vue组件组件之间嵌套 Vue组件的基本概念 Vue组件是一种可复用的Vue实例,用于封装可重用的HTML元素、Jav...
    99+
    2023-05-18
    Vue注册组件 Vue组件注册
  • Js中parseInt的使用及注意事项
    目录start回顾一下map学习一下 parseInt总结:总结start 先看一个题目['1','2','3'].map(parse...
    99+
    2023-01-03
    js parseInt js parseint 精度 js parseint 小数
  • BeanUtils.copyProperties使用总结以及注意事项说明
    目录1.前言2.一般使用3.拷贝属性时忽略空值4.使用注意事项(1)5.使用注意事项(2)6.使用注意事项(3)1.前言 开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用...
    99+
    2024-04-02
  • assert的用法及注意事项有哪些
    这篇文章主要介绍“assert的用法及注意事项有哪些”,在日常操作中,相信很多人在assert的用法及注意事项有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”assert的用法及注意事项有哪些”的疑惑有所...
    99+
    2023-06-02
  • python标识符的用法及注意事项
    1、标识符由字符(A~Z和a~z)、下划线和数字组成,但第一个字符不能是数字。 2、保留字符不能与标识符相同。 3、不能包含空格、@、%和$等特殊字符。 4、字母严格区分大小写。 尽...
    99+
    2024-04-02
  • 联合主键的用法及注意事项
    联合主键(Composite Primary Key)是一种在数据库表中使用多个字段组合作为主键的方式。这些字段的组合必须是唯一的,用于唯一标识一条记录。在本文中,我们将详细介绍联合主键的用法及注意事...
    99+
    2023-09-07
    数据库 mysql
  • 细数localStorage的用法及使用注意事项
    目录localStorage 介绍localStorage 使用localStorage的浏览器支持情况 localStorage代码中的使用localStorage 注意...
    99+
    2024-04-02
  • Android 资源混淆的方案及注意事项
    目录原理注意事项使用方法一些细节附:美团的资源混淆方案Android查找资源的流程AAPT资源混淆原理 Android的资源类型是很多的,比如说drawable,string,la...
    99+
    2024-04-02
  • 数据库inner join语句的使用方法以及注意事项
    这篇文章主要介绍“数据库inner join语句的使用方法以及注意事项”,在日常操作中,相信很多人在数据库inner join语句的使用方法以及注意事项问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • C语言中scanf函数的用法及注意事项
    C语言中scanf函数的用法及注意事项 作为C语言中最常用的输入函数之一,scanf函数在程序开发中具有重要的作用。它能够从标准输入流(键盘)中接收用户输入的数据,并将其存储到指定的变...
    99+
    2024-02-22
    函数 c语言 scanf
  • Assert.assertEquals的使用方法及注意事项说明
    目录Assert.assertEquals使用及注意事项Assert运行环境需要什么导入什么jar包?使用步骤Assert.assertEquals是什么含义assertEquals...
    99+
    2024-04-02
  • 浅谈java中null是什么,以及使用中要注意的事项
    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如:Integer i=null;Float f=null;String s=null;但是不能把null赋值给基本类...
    99+
    2023-05-31
    java null ava
  • localStorage的用法及使用注意事项是什么
    这篇文章主要讲解了“localStorage的用法及使用注意事项是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“localStorage的用法及使用注意事项是什么”吧!localStor...
    99+
    2023-06-29
  • android中openssl使用要注意哪些事项
    在Android中使用OpenSSL时,需要注意以下几点事项: 使用合适的OpenSSL版本:确保使用最新的OpenSSL版本,...
    99+
    2024-04-09
    android openssl
  • crash-safe replication的解析及主从注意事项
    先前碰到一个故障,于是引入了crash-safe replication,下面仔细描述; 故障描述:    从库(slave端)宕机,重启后,mysql同步发现有数据主键冲突; 故...
    99+
    2024-04-02
  • vue.js移动端配置flexible.js及注意事项的示例分析
    这篇文章主要为大家展示了“vue.js移动端配置flexible.js及注意事项的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue.js移动端配置f...
    99+
    2024-04-02
  • React中style的使用方法及注意事项是什么
    这篇“React中style的使用方法及注意事项是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中style的...
    99+
    2023-07-05
  • Assert.assertEquals的使用方法及注意事项是什么
    这篇文章主要介绍了Assert.assertEquals的使用方法及注意事项是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Assert.assertEquals的使用方法及注意事项是什么文章都会有所收获,...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作