我该如何在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中有点棘手,但仍然可管理(根据经验)。