2. 실행 흐름

1. 학습 순서
더보기
(1) 요약
- 개념 → 구조 → 코드 → 실행 흐름
(2) 상세
- 네트워크 프로그래밍 개념 (모든 IT 기술 공통)
- 네트워크 프로그래밍 구조 (모든 IT 기술 공통)
- 네트워크 프로그래밍 코드 (언어마다 호출 함수 차이, 근본 원리 모든 IT 기술 공통)
- 네트워크 프로그래밍 실행 흐름 (모든 IT 기술 공통)
2. 실행 흐름
ㄴ 2.1 서버 코드와 실행 흐름
더보기


서버 간단 예시 코드
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel
from PySide6.QtNetwork import QTcpServer, QHostAddress
class ServerWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Server Window")
self.label = QLabel("Waiting...", self)
self.label.setGeometry(50, 50, 300, 50)
self.server = QTcpServer(self)
self.server.newConnection.connect(self.on_new_connection)
# 가장 단순한 안전장치: 연결 소켓을 저장
self.client_socket = None
ok = self.server.listen(QHostAddress("127.0.0.1"), 8888)
if not ok:
self.label.setText("Listen failed")
def on_new_connection(self):
# 단일 클라이언트만 받는 가장 단순 버전
self.client_socket = self.server.nextPendingConnection()
self.client_socket.readyRead.connect(self.on_ready_read)
self.label.setText("Client connected")
def on_ready_read(self):
data = self.client_socket.readAll()
message = bytes(data).decode(errors="replace")
self.label.setText(f"Received: {message}")
if __name__ == "__main__":
app = QApplication(sys.argv)
w = ServerWindow()
w.show()
sys.exit(app.exec())
ㄴ 2.2 클라이언트 코드와 실행 흐름
더보기


클라이언트 간단 예시 코드
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit
from PySide6.QtNetwork import QTcpSocket
class ClientWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Client Window")
self.line = QLineEdit(self)
self.line.setGeometry(50, 50, 200, 30)
btn = QPushButton("Send", self)
btn.setGeometry(50, 100, 100, 30)
btn.clicked.connect(self.send_message)
self.socket = QTcpSocket(self)
self.socket.connectToHost("127.0.0.1", 8888)
def send_message(self):
self.socket.write(self.line.text().encode())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = ClientWindow()
w.show()
sys.exit(app.exec())
ㄴ 2.3 소스코드 기반 흐름도

