Advertisement

TCP连接断开 send是否成功

阅读量:

如题所述,突然产生一个疑问,假设server与client通过TCP协议完成连接建立后,server突然发生故障并停止运行。此时,client调用send()函数所返回的值会是怎样的呢?

测试结果:

当client成功连接至server后,若server进程意外终止,client在首次进行数据发送时仍然能够成功完成发送操作。

抓包结果如下图所示:

然而,第二次调用send()函数时将遭遇失败,返回值为-1,并伴随Errno 32错误提示,即“Broken pipe”。与此同时,系统也无法捕获到相应的数据报文。相关测试代码如下所示:

server.c

复制代码
 #include<stdlib.h>

    
 #include<stdio.h>
    
 #include<errno.h>
    
 #include<string.h>
    
 #include<netdb.h>
    
 #include<sys/types.h>
    
 #include<netinet/in.h>
    
 #include<sys/socket.h>
    
 #

全部评论 (0)

还没有任何评论哟~