我正在创建一个带有以下参数的套接字-
fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
但由于某种原因,套接字创建失败,fd 设置为 -1。
- 我想了解套接字创建失败的原因是什么?
- 我如何确定在我的情况下套接字创建失败的原因是什么?
注意:这是始终可重现的,我们连续 5 次重试套接字创建,间隔为 500 毫秒,并且所有 5 次都失败。
正如 Eugene Sh/WeatherVane 所说,要查看错误:
#include <errno.h>
#include <stdio.h>
#include <string.h>
...
fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
if (fd == -1) {
printf("error cannot create socket, errno = %d : %sn",
errno, strerror(errno));
...return/exit etc
}
...
是我错了还是域必须PF_INET
,那么socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
必须socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
?
sctp(7) - Linux man page
编辑:在raspbian(Linux raspberrypi 4.14.79)下我可以同时做
如果您以 root 身份运行,是否也会发生错误?特别是如果你在Android下(看看什么会导致socket()"权限被拒绝"错误? )