过程是这样的 在写rtsp服务器的时候 accept接受从客户端来的请求
当协议是udp的时候 播放端可以正常关闭 在打开 没问题
但是当协议是tcp的时候 播放端第一次打开之后 关闭 在打开 通过log发现 服务端的accept会返回0
代码如上 log如下 client_fd返回值为0 errno =9 错误表示Bad file descriptor
找了很久也没找到原因 后开没办法 一步步注释 代码
最后发现问题的原因是 在下面的代码 如果注释掉 就会出现这样的问题
如果改成如下就没问题 后来通过加log发现 如果是tcp的话 rtp_fd 和 rtcp_fd 的值 都是0
也就是 我们在程序中执行了close(0)这个操作
借用别的博主的一张图
0表示标准输入流 程序中直接执行close(0)会导致程序出现各种奇奇怪怪的问题 各位可以直接在自己的程序中加入这句试试