C语言 套接字创建失败的原因是什么



我正在创建一个带有以下参数的套接字-

fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);

但由于某种原因,套接字创建失败,fd 设置为 -1。

  1. 我想了解套接字创建失败的原因是什么?
  2. 我如何确定在我的情况下套接字创建失败的原因是什么?

注意:这是始终可重现的,我们连续 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()"权限被拒绝"错误? )

最新更新