writev发送数据失败

最近项目上遇到一个问题,curl请求服务器阻塞了。

我初步怀疑是服务器没有下发数据,通过GDB调试,发现调试到writev函数时就是跳过,怀疑是writev函数出现问题。

1.我检查了一下自己的套接字是否已经被破坏,经过判断没有;

2.怀疑数据在TCP缓冲区里,特地设置TCP_NODELAY,没有产生效果;

3.抓包分析报文数据,看看能否找到有用信息,结果发现实际上服务器数据早就发送了,是客户端阻塞了

结论:HTTP请求有报文体时,必须设置Content-Length,否则客户端会一直阻塞。

备注:writev函数在GDB调试时略过时正常现象。

posted on 2024-10-19 19:39  寒魔影  阅读(6)  评论(0编辑  收藏  举报

导航