Qt 응용 프로그램에서 연결 시간 초과를 사용자 정의 할 수 있지만 waitForConnected에 대한 인수로 전달하는 숫자와 관계없이 시간 제한은 동일합니다 (약 3 초입니다. 기본값 30).Qt의 waitForConnected에 대한 시간 제한을 설정할 수 없습니다.
예 :
if(socket->waitForConnected(koko))
{
...do stuff...
}
else
{
...do else stuff...
}
아무리에 민숙을 설정 어떤 수, 제한 시간은 약 3 초 정도되는 유지하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
내 소켓 연결 :socket = new QTcpSocket();
socket->connectToHost(addres,port);
:
QHostAddress addres, quint16 port
과 같은 QLineEdit에서 얻고 민숙 메신저 (제한 시간은 QLineEdit) :
int koko = ui->Timeout->text().toInt()*1000;
시간 초과가 작동하지 않는다고 말하기 전에 연결할 수없는 호스트에 연결을 시도 했습니까? 제공 한 코드 샘플이 도움이되지 않습니다. 최소한 소켓의 초기화 (QAbstractSocket의 구체적인 유형을 알려주는)와'connectToHost()'에 넣은 매개 변수를 추가하십시오. – Antwane
@Antwane - 그는 타임 아웃이 3 초라고 말합니다. 실제로 소켓을 타임 아웃한다고합니다. 연결 시도에서 성공하기보다는. – dtech
@ddriver 정상적인 동작입니다. connectToHost()가 호출 된 후 연결이 HostLookupState 또는 ConnectingState에있는 경우에만 시간 초과가 실행됩니다. 연결에 실패하면 (UnconnectedState) 메서드는 false를 반환합니다. 연결이 성공하면 (ConnectedState) 메서드는 true를 반환합니다. 그 문서는 분명하다 :'소켓이 연결될 때까지 기다린다, UP TO * msecs * milliseconds'. 연결 상태가 30 초 (기본값) 전에 변경되면 메서드가 더 일찍 반환됩니다. – Antwane