我正在使用以下参数创建套接字-
fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
但是由于某种原因,套接字创建失败,并且fd设置为-1。
注意:这是可重复的,我们连续5次以500毫秒的间隔重试套接字创建,而这5次失败。
答案 0 :(得分:1)
正如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 : %s\n",
errno, strerror(errno));
...return/exit etc
}
...
我错了吗,或者域必须是PF_INET
,然后socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
必须是socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
吗?
编辑:在raspbian(Linux raspberrypi 4.14.79)下,我可以同时做这两个
如果您以 root 身份运行,是否还会发生错误?特别是如果您使用的是Android系统(请参见what can cause a socket() “Permission denied” error? )