我正在使用以下参数创建套接字

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/

10-16 05:59