套接字创建何时在C中失败?

Rav*_*avi 3 c sockets vxworks

我必须对软件的套接字相关要求进行测试.作为测试的一部分,我必须创建一个套接字创建失败的案例.我的问题是如何使C语言socket()函数返回错误值-1.以下是在软件中创建套接字的代码行.

int socket = socket(AF_INET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)

系统配置:

  • 操作系统:Windriver VxWorks
  • 语言:C

650*_*502 7

除了无效参数或极低资源条件外,套接字创建很少失败(但在这些情况下通常没有任何作用,因此尝试恢复是不可能的任务).

在运行时失败的是例如listen调用,因为另一个进程已经在同一端口上侦听.

在Windows套接字创建中,最常见的是因为尚未执行winsock初始化调用而失败.这是IMO在API中的一个可怕的设计错误(如此糟糕,这让我觉得它是故意尝试防止可移植性没有真正的原因).