小编use*_*832的帖子

EAGAIN 上的recv()

我实现了一个套接字客户端,通过 HTTP 通过 RTSP 与 IP 摄像机进行通信,以从摄像机获取视频。

为了建立与摄像机的通信,首先我必须设置 HTTP-GET 隧道,然后发送 RTSP 命令。当相机失去连接时,程序必须关闭隧道处理程序,完成线程,当进程返回主函数时,它开始通信(启动线程,等等)。

重新连接时:http-get 隧道设置正常,我的意思是,套接字连接并接收“HTTP OK”,因此程序发送 RTSP“DESCRIBE”,但 recv 始终返回 EAGAIN 错误。我用wiresha 检查相机是否发送了DESCRIBE OK 响应,但recv 从未收到它。

这是代码:

   struct sockaddr_in aServer;
  // string myData;
  char *myData=new char [256];
  connection *c=(connection*)vargp;


   memset(&aServer, 0, sizeof aServer);
   aServer.sin_family = AF_INET;

   aServer.sin_addr.s_addr = inet_addr(c->theServer.c_str());
   if (aServer.sin_addr.s_addr == INADDR_NONE)
   {
     struct hostent *hp;

     hp = gethostbyname(c->theServer.c_str());
     if (hp != NULL)
     {
       memcpy(&aServer.sin_addr, hp->h_addr, hp->h_length);
       aServer.sin_family = hp->h_addrtype;    //Protocol family
     }
     else
           cout << "Failed to resolve " << …
Run Code Online (Sandbox Code Playgroud)

c++ sockets connection recv

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

connection ×1

recv ×1

sockets ×1