我正在摆弄套接字,我想在我的 Mac 上使用 SCTP 协议进行测试。
但是,当我尝试包含该文件时,netinet/sctp.h编译器给出“文件未找到”错误。
所以我做了一些挖掘,果然,netinet/sctp.hMac OSX Lion 上没有包含文件。当我可以使用 建立套接字IPPROTO_SCTP并且构建良好时,为什么会这样?
所以,总结来说,我有两个问题:
我正在使用 Erlang 构建 SCTP 支持应用程序,并且偶然发现了一些可能与我的机器相关的问题(我在另一台机器上尝试了相同的代码,它工作得很好)。我使用的是 Ubuntu 22.04。当我尝试 gen_sctp:open(...) 时,它返回:“{error,eprotonosupport}”,经过一些研究后发现是“此域内不支持协议类型或指定的协议。”。我试过:
sudo apt-get install libsctp-dev lksctp-tools
sctp_darn -H 0 -P 2500 -l
sctp_darn -H 0 -P 2600 -h 127.0.0.1 -p 2500 -s
Run Code Online (Sandbox Code Playgroud)
而且看起来效果很好。后:
lynis audit system | grep sctp
Run Code Online (Sandbox Code Playgroud)
它返回:
* Determine if protocol 'sctp' is really needed on this system [NETW-3200]
Run Code Online (Sandbox Code Playgroud)
所以看来是可以启用的。我缺少什么?(端口为3868)
编辑:端口已打开。我尝试使用 ufw 和 iptables 来处理所有协议,并且仅针对 sctp。没用。
编辑2:所以在设置了2个VM的Ubuntu 20.04和Ubuntu 22.04之后,一切似乎都按预期工作。我想我的系统搞砸了。
前段时间我在Linux上使用过SCTP,现在我想在新项目中再次使用它.问题是,lksctp似乎已经死了,自2009年以来没有更新(根据git).在这个时候SCTP草案中几乎没有重要的事情发生变化,所以lksctp现在已经过时了(例如API)
我试图找到这个协议的其他实现,但看起来,lksctp是唯一的.你有什么关于Linux上SCTP未来的信息吗?
WebRTC RTCPeerConnection接口有一个createDataChannel方法和一个ondatachannel事件处理程序.这些如何互动?如何创建可用于在两个对等体之间发送/接收数据的单个数据通道?
此外,RTCDataChannelInit构造函数有一个negotiated字段,默认情况下设置为false并表示它会导致频道在带内通知.如果设置为什么会发生什么true?
SCTP 中的多个流如何驻留在单个关联中,而在 TCP 中我们必须涉及多个端口。对于 SCTP,多流是否也以任何方式涉及端口。RFC 6525表示只能有 65k+ 的流,这似乎等于可能的端口数。
首先我在Ubuntu 12.04上安装sctp
sudo apt-get install libsctp-dev lksctp-tools
然后在我的.c文件中,我包括:
#include < netinet/in.h >
#include < netinet/sctp.h >
#include < sys/socket.h >
#include < stdlib.h >
#include < unistd.h >
Run Code Online (Sandbox Code Playgroud)
howerver,当我用gcc编译时,结果是:
undefined reference to `sctp_recvmsg'
undefined reference to `sctp_get_no_strms'
undefined reference to `sctp_sendmsg'
Run Code Online (Sandbox Code Playgroud)
怎么了?
我无法包含在我的任何文件中。编译的时候总是失败。我安装了 lksctp-tools 软件包。
我跑
gcc -Wall -lsctp -o client admin.c deserializer.c input_parser.c main.c receive_response.c send_request.c serializer.c utils.c
Run Code Online (Sandbox Code Playgroud)
我得到:
main.c:2:10: fatal error: netinet/sctp.h: No such file or directory
#include <netinet/sctp.h>
^~~~~~~~~~~~~~~~
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我正在使用 Fedora,我不知道这是否会改变什么。然而该项目似乎在 CLion 上运行良好。