2012-07-18 2 views
1

나는 서버로부터 정보를 얻기 위해 QTcpSocket을 사용한다.QTcpSocket 재 연결 방법

내 측면에서 보면 서버에 연결하여 바이트를 기다려야합니다.

QTcpSocket을 만듭니다. 호스트에 연결하십시오. 데이터 가져 오기 시작, 괜찮습니다. 그러나 예를 들어 이더넷 케이블을 꺼낼 때 소켓 객체와 차이가 없습니다.

QAbstractSocket :: error() 및 QAbstractSocket :: stateChange()와 같은 신호를 연결하려고 시도했지만 연결이 끊긴 순간 아무 것도 제공하지 않습니다.

내 작업은 다시 연결될 때까지 몇 초 후에 다시 시도하는 것입니다.

어떤 조언이 필요합니까?

+5

케이블이 연결되어 있지 않기 때문에 TCP 연결이 손실되지 않습니다. 케이블을 분리하고 1 분 안에 다시 연결하면 (올바르게 호출 한 경우) 연결 해제가 아닌 프로그램 대기 시간으로 만 나타나야합니다. –

+0

프로토콜이 탁구를 지원합니까? –

답변

0

클라이언트 및 서버 프로젝트를 프로그래밍하는 동안 동일한 문제가있었습니다.

SIGNAL -> disconnected()를 사용했습니다. 연결이 끊어지면 클라이언트에서 즉시 방출됩니다.

connect (클라이언트, SIGNAL (disconnected()), this, SLOT (DisconnectMessage()));

사용해 보시기 바랍니다.

+0

질문 주석에서 언급했듯이 소켓은 패킷을 보내고 받기를 다시 시도하기 때문에 연결을보고하지 않습니다. 포기하고 연결 해제를보고 할 때까지 꽤 오래 기다려야합니다. –

+0

몇 가지 테스트를 했으므로 이더넷을 뺀 1-2 분 후에 QTcpSocket 디코 니스가 표시되고 플러그 인을 다시 시도하면 얼마 후에 연결이 자동으로 시작됩니다. 그것은 나를 완전히 만족시킵니다. – mmmaaak

관련 문제