QT Q3SocketDevice re connect 문제
글쓴이: pupurit / 작성시간: 일, 2011/10/30 - 9:15오후
안녕하세요 초보 개발자 입니다.
Q3SocketDevice 관련되어 도움을 구하고자 질문합니다.
두 개의 스레드에서 하나의 소켓을 사용해서 하나의 스레드 에서는 receive를 하고 다른 쓰레드에서는 sender를 하려 합니다.
QTcpSocket을 사용해서(동기방식 또는 비동기 방식) 하려고 했으나 QTcpSocket를 쓰레드 안에서 사용하니 여러거지 에러 가 발생해서 부득이 하게 원래 C 스타일로 구현하기로 하고 Q3SocketDevice를 사용 했습니다.
그런데 문제는 하나의 스레드에서 while을 돌면서 데이터를 받는 중에 에러가 발생하면 다시 connect 함수를 사용해서 다시 연결 후 사용하려 하는데... 연결이 안되네요.
그런데 connect 함수 전에 Q3SocketDevice 객체를 다시 new로 생성하면 연결이 되더군요
(소켓을 close 해도 안되구요)
혹시나 아시는 분이 계시면 조그만 도움이라도 기다리겠습니다.
아래는 소스 입니다.
ReceiveSocketThread::ReceiveSocketThread(Q3SocketDevice *socket){ this->socket = socket; } void ReceiveSocketThread::run(){ bool socketConncted=false; int readLen; char data[2000]; while(true){ if(socketConncted==false){ // socket = new Q3SocketDevice(Q3SocketDevice::Stream); --> 이부분의 주석을 지우면 정상적으로 동작 socketConncted=socket->connect(QHostAddress::LocalHost,6178); sleep(1); continue; } readLen=socket->read(data,1000); if(readLen == -1){ // 도중에 에러가 발생했다고 간주 socketConncted=false; continue; } }
Forums:
댓글 달기