我正在使用以下参数创建套接字
fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
但是由于某种原因,套接字创建失败,并且fd设置为-1。
我想了解套接字创建失败的原因和所有原因?
如何确定我的情况下套接字创建失败的原因是什么?
注意:并且这始终是可重复的,我们以500毫秒的间隔连续5次重试套接字创建,所有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 : %s\n",
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(请参见what can cause a socket() “Permission denied” error?)
关于c - 套接字创建失败的原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54408005/