Live 555 RTSP-запрос установлен тайм-аут - PullRequest
0 голосов
/ 04 февраля 2020

Я использую библиотеку Live 555 http://www.live555.com/

Я использую тестовую программу, которую они предоставляют по имени: 'testRTSPClient', она работает хорошо, но с некоторыми IP-адрес, когда я получил тайм-аут, программа занимает слишком много времени, чтобы дать мне ответ, я хочу знать, возможно ли установить время тайм-аута, когда я отправляю запрос. после истечения времени ожидания эта функция вызывается, я надеюсь, чем помочь ...

void RTSPClient::connectionHandler1() {
  // Restore normal handling on our sockets:

  envir().taskScheduler().disableBackgroundHandling(fOutputSocketNum);

  envir().taskScheduler().setBackgroundHandling(fInputSocketNum, SOCKET_READABLE|SOCKET_EXCEPTION,
                        (TaskScheduler::BackgroundHandlerProc*)&incomingDataHandler, this);

  // Move all requests awaiting connection into a new, temporary queue, to clear "fRequestsAwaitingConnection"
  // (so that "sendRequest()" doesn't get confused by "fRequestsAwaitingConnection" being nonempty, and enqueue them all over again).
  RequestQueue tmpRequestQueue(fRequestsAwaitingConnection);
  RequestRecord* request;

  // Find out whether the connection succeeded or failed:
  do {
    int err = 0;
    SOCKLEN_T len = sizeof err;
    if (getsockopt(fInputSocketNum, SOL_SOCKET, SO_ERROR, (char*)&err, &len) < 0 || err != 0) {
      envir().setResultErrMsg("Connection to server failed: ", err);
      if (fVerbosityLevel >= 1) envir() << "..." << envir().getResultMsg() << "\n";
      break;
    }

    // The connection succeeded.  If the connection came about from an attempt to set up RTSP-over-HTTP, finish this now:
    if (fVerbosityLevel >= 1) envir() << "...remote connection opened\n";
    if (fHTTPTunnelingConnectionIsPending && !setupHTTPTunneling2()) break;

    // Resume sending all pending requests:
    while ((request = tmpRequestQueue.dequeue()) != NULL) {
      sendRequest(request);
    }
    return;
  } while (0);

  // An error occurred.  Tell all pending requests about the error:
  resetTCPSockets(); // do this now, in case an error handler deletes "this"
  while ((request = tmpRequestQueue.dequeue()) != NULL) {
    handleRequestError(request);
    delete request;
  }
}
...