我必须对软件的套接字相关要求进行测试.作为测试的一部分,我必须创建一个套接字创建失败的案例.我的问题是如何使C语言socket()函数返回错误值-1.以下是在软件中创建套接字的代码行.
int socket = socket(AF_INET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)
系统配置:
除了无效参数或极低资源条件外,套接字创建很少失败(但在这些情况下通常没有任何作用,因此尝试恢复是不可能的任务).
在运行时失败的是例如listen调用,因为另一个进程已经在同一端口上侦听.
在Windows套接字创建中,最常见的是因为尚未执行winsock初始化调用而失败.这是IMO在API中的一个可怕的设计错误(如此糟糕,这让我觉得它是故意尝试防止可移植性没有真正的原因).