如何在 Android 中使用 SCTP 协议?
我已经知道 Android 系统默认不支持 SCTP,但是可以通过插入 SCTP 内核模块或在模块配置中启用 SCTP 重新构建内核来启用它。
我需要对这个问题有所了解。是否可以?如何让android支持该协议?如何构建内核模块并正确插入?如果我们能够成功地使系统支持它,我们如何使用该协议?android 上的 Java API 是否支持 SCTP?
如何在 Android 中使用 SCTP 协议?
我已经知道 Android 系统默认不支持 SCTP,但是可以通过插入 SCTP 内核模块或在模块配置中启用 SCTP 重新构建内核来启用它。
我需要对这个问题有所了解。是否可以?如何让android支持该协议?如何构建内核模块并正确插入?如果我们能够成功地使系统支持它,我们如何使用该协议?android 上的 Java API 是否支持 SCTP?
使用模块进行处理是正确的方法。要回答您的问题:
SCTP 已作为 Linux 源代码树中的内核模块提供 - “CONFIG_IP_SCTP=m”将启用该模块。您可以将其更改为硬链接的“y”,尽管这可能不可行,因为您必须为此重建整个内核。
该模块仍必须按内核版本构建。所以基本上每个供应商,您需要获取他们的内核源代码(可行),然后针对它编译您的模块。
要使用:在用户模式下 - 将通过调用 s = socket (AF_INET[6], SOCK_STREAM, IPPROTO_SCTP) 创建套接字;从那时起,套接字 API 的工作方式完全相同,除了一些例外(即 setsockopt,它特定于协议类型)。
来自 Java - 实际上支持最新版本的协议(JDK7 里程碑 3),但 Java 支持它并不意味着 Dalvik(Android 的“java vm”)支持。尽管 Android 确实“准备就绪”支持 SCTP,但它还没有出现在 Dalvik 中(至少在 4.2 中没有)。不过,您可以创建一个 Java 类,就像在一个包中一样,它将用 SCTP 调用包装一个本机库。由于 NET 权限,它在 Android 中有点棘手,但仍然可以管理(根据经验)。