Linux:获取 sctp 连接的套接字选项时出错

标签 linux sockets sctp

建立一对一sctp连接时,sctp连接accept()后内部服务器日志报如下错误:

"Error getting socket options for socket: 13"

从错误来看,getsockopt()似乎返回了一个错误,根据“getsockopt(2) - Linux man page”中的功能描述,设置了errno来指示原因。

我需要你的帮助来了解如何检查 errno 并跟踪失败的原因。

仅供引用,从 tcpdump 我有以下消息流,连接已被服务器关闭。

No. Time Source Destination Protocol Message

19716 16:47:25.174569 client server SCTP INIT
19717 16:47:25.174667 server client SCTP INIT_ACK
19718 16:47:25.174905 client server SCTP COOKIE_ECHO
19719 16:47:25.174962 server client SCTP COOKIE_ACK
19720 16:47:25.175175 server client SCTP SHUTDOWN
19721 16:47:25.175507 client server SCTP SHUTDOWN_ACK
19722 16:47:25.175537 server client SCTP SHUTDOWN_COMPLETE

感谢您的支持, 提前致谢

最佳答案

这是你的代码吗?您应该使用 strerror_r 从错误号中获取消息。否则,您可以安装 perror 二进制文件来打印数字错误。

13 似乎是 EACCES,这在手册页中没有记录(Linux 上的一个常见问题)。快速内核搜索似乎表明最常见的原因是未启用 sctp 身份验证/加密,但这绝不是决定性的。

关于Linux:获取 sctp 连接的套接字选项时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791521/

相关文章:

java - 我如何在java中选择哪个端口可以免费用于ServerSocket或Socket?

sockets - 通过 SCTP 流的 TLS 握手

c++ - 测试程序中的链接错误与 RTP(实时传输协议(protocol))

linux - 在 Docker 容器中构建 make 用户时返回非零值 :error 9,

wcf - 更改 WCF net.tcp 绑定(bind)上的套接字选项

c# - 如何确定连接的套接字是否使用 IPSec?

linux - 有人可以帮助我理解在 linux 上捕获的 SCTP 统计信息吗

C 数组在 Windows 和 Ubuntu 上的处理方式不同

python - Linux:如何模拟接口(interface)上的传入数据包?