통신이 1:1로 n개가 있어야 하는 프로그램을 만들고 있는데..
그걸 못해서 자꾸 해매다가... 어쩌다가 성공!!
class Main(QDialog, ...):
def __int__(self):
self.worker = Worker() #백그라운드에서 돌아갈 인스턴스 소환
self.worker_thread = QThread() #따로 들어갈 thread를 하나 생성
self.worker.moveToThread(self.worker_thread) #worker를 만들어둔 쓰레드에 넣기
self.worker_thread.start() #쓰레드 실행
self._connectSignals() #시그널을 연결하기 위한 함수 호출
class Worker(QObject):
def __init__(self, parent = None):
super(self.__class__,self).__init__(parent)
self.mutex = QMutex()
def run(self):
# TCP socket 설정
serverSock = socket(AF_INET, SOCK_STREAM)
# socket IP Port 튜플로 지정.
serverSock.bind(('', 4000))
# socket 클라이언트로부터 오는 신호 읽음.
serverSock.listen(1)
while True:
# 읽은 신호의 주소 수락.
connectionSock, addr = serverSock.accept()
self.function(connectionSock)
def function(self, connectionSock):
self.mutex.lock()
알고리즘..
self.mutex.unlock()
이런 식으로 짜면 다중 소켓 통신이 되는거 같다.... (저는 됐습니다.)
QMutex()가 Thread에서 lock과 비슷하다고 합니다.
QThread를 사용할경우 쓰는 함수인거 같습니다.
아래에 블로그에 되게 많이 도움이 됐습니다.!
QThread 참고
[Python3] PyQt5 | QThread-pyqtSignal/Slot Example
이번에 알아볼까 하는 내용은 QThread 입니다. 최근에 알리미 프로그램을 짜봐서 그것을 gui와 함께 깔끔...
blog.naver.com
Socket 참고
https://soooprmx.com/archives/8737
파이썬 소켓 연결 사용법 · Wireframe
네트워크 프로그래밍 분야에서 소켓은 연결된 네트워크의 양 끝단을 추상화 시킨 개념이며, 컴퓨터의 관점에서는 네트워크로 통하는 컴퓨터의 외부와 컴퓨터 내부의 프로그램을 이어주는 인터페이스이다. 소켓의 개념에 대해서 이 글에서 모두 소상히 설명할 수는 없고, 네트워크를 통해서 바이트스트림을 주고 받을 수 있는 창구라 보면 된다. 다만 단순히 프로그램의 내부와 외부를 잇는 표준 입출력과는 달리 소켓은 네트워크의 반대편이 어디인지에 … 파이썬 소켓 연결 사용법
soooprmx.com
'Python > 통신' 카테고리의 다른 글
| Python 소켓통신 (TCP / UDP) (0) | 2019.05.20 |
|---|