본문 바로가기
무모한 도전-주식 인공지능 만들기

QProcess에서 데이터를 서로 주고받기 위한 새로운 시도

by 인터넷떠돌이 2019. 5. 10.
반응형

안녕하세요?

 

예고대로 하기에는 이 Qprocess에 관해서 어떻게 하는 것이 너무 시간이 걸려서 하는 수 없이 많이 늦어졌습니다. 아무튼 이번 포스팅에서는 이 qprocess에서 어떻게 하면 자식 프로세스와 데이터를 주고 받을 수 있는지에 대해서 한번 시도를 하였고, 이게 시간을 많이 잡아먹기는 잡아먹었습니다. 아무튼 그 결과를 포스팅 하고자 합니다.

 

먼저 이 Qprocess를 한번 연습해 보기 위해서 새로운 프로젝트를 생성해 보도록 시도를 합니다. 이렇게 해서 일단 연습 프로젝트에 들어가 보도록 합니다.

 

그리고 나서 Qt Designer에서 위 스크린샷과 같이 일단 실행이 되면 뜨는 UI를 만들어 보도록 합니다. 이렇게 하는 것으로 이제 작업이 일달락 되기는 되었습니다.

 

다음으로는 위 스크린샷과 같이 일차적으로 UI만 띄울 수 있도록 한번 간단하게 코드를 짜 보도록 합니다. 이렇게 하는 것으로 일단 실행을 시켜 보면......

 

 

그래서 한번 실행을 시켜 본 결과, 위 스크린샷과 같이 실행까지는 성공적으로 나오는 것을 확인할 수 있기는 있었습니다. 

 

이제 목적을 위해서 일단 UI에다가 라벨을 하나 추가해서 일단 문구를 하나 적어 주기는 주도록 합니다. 이렇게 해서 다음 단계로 넘어 갑니다.

 

다음으로는 위 스크린샷과 같이 Qprocess를 실행시키기 위한 문구를 입력하도록 합니다. 처음에는 이 start에 어떻게 데이터를 넣을 수 있으리라 생각을 했었는데, 실제로는 그렇지가 못하다는 것을 알 수 있었습니다.

 

 

다음으로는 한번 위 스크린샷과 같이 QtNetwork의 QTcpSocket과 같은 것들을 추가시켜 주도록 합니다. 일단 들어 보니까, interprocess communication을 위해서 이 방법을 사용할 수 있다고 합니다.

 

그래서 먼저 위 스크린샷과 같이 Qprocess를 실행시키기 전에 먼저 제 컴퓨터인 127.0.0.1을 주소로 해서 한번 접속을 하도록 설정을 하도록 해봅니다.

 

그리고 나서 한번 위 스크린샷과 같이 Hellow라는 말을 적어서 한번 이 데이터를 보낼 수 있는지 여부를 알아보고자 합니다.

 

이제 서버(server)역할을 하기 위한 py파일을 짜야하는 단계에 들어왔습니다. 여기서도 위 스크린샷과 같이 QtNetwork를 한번 만들어 보도록 합니다.

 

그래고 나서 위 스크린샷과 같이, newConnection이라고 해서 한번 연결이 클라이언트로 부터 들어오면, 실행이 되도록 만들어 주도록 합니다.

 

그리고 나서 이전에 있던 if문을 해제한 다음에, 여기서 실행을 시켜 보도록 합니다. 이제는 실행시키면, 클라이언트에서 보낸 내용이 표시되어야 합니다.

 

일단 들어온 데이터가 없다는 식으로 서버역할을 하는 파이썬 스크립트가 실행이 되는 것을 확인할 수 있었습니다. 여기까지만 보면 뭐가 대단하냐 하겠지만, 할 줄 몰라서 여기까지 오는 것에도 상당히 힘들었습니다.

 

그리고 한번 클라이언트의 역할을 하는 프로그램부터 실행시켜서 제대로 데이터가 전달이 되는지를 한번 살펴 보았는데, 문제는 자식 프로세스격인 프로그램이 실행은 되기는 되는데, 정작, 데이터는 전달이 되지 않는 것을 확인할 수 있었습니다.

 

도저히 하다하다 안 되어서, 한번 위 스크린샷처럼 newConnection이 오면 호출이 되는 함수가 그냥 실행을 한 경우에는 호출이 되는지 아닌지 여부라도 알아 보고자 했습니다.

 

확인결과 이 메서드는 서버에서 전혀 나오지 않는 것을 확인할 수 있었습니다. 그래서 다음에는 어떻게 해서든 간에 이렇게 newConnection인 신호가 들어온 지 아닌지를 알아봐야 하는 과제가 생겼는데, 이렇게 하고 보니까 하루가 다 가고서 새벽이 되었습니다. 그래서 이번 포스팅은 여기까지만 하도록 하고, 남은 내용은 주말에 이어서 해볼까 합니다.

반응형