Я использую библиотеку 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;
}
}