250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 파이썬
- pytorch
- Django
- 딥러닝
- POD
- OpenCV
- Docker
- Python
- k8s
- yaml
- kubernetes
- 데이터베이스
- 웹 프로그래밍
- 논문 리뷰
- 파이토치
- 그래픽 유저 인터페이스
- Computer Vision
- 텐서플로우
- tensorflow
- Web Programming
- numpy
- GUI
- paper review
- Deep Learning
- FLASK
- 컴퓨터 비전
- 장고
- vue.js
- MariaDB
- Tkinter
Archives
- Today
- Total
Maxima's Lab
[Python, TCP/IP] 다중 클라이언트 (Multiple Clients) 데이터 송수신 본문
728x90
SMALL
안녕하세요, 오늘은 다중 클라이언트 (Multiple Clients)에 대해서 접속을 수락하고 각 Clients가 보내는 데이터를 송수신하는 코드를 구현해보도록 하겠습니다.
이를 구현하기 위해서는 Multiple Threads를 사용해서 클라이언트의 연결 요청을 처리하고 연결할 수 있는 최대 클라이언트 수를 지정해줍니다.
import socket
import threading
HOST = '127.0.0.1'
PORT = 12345
MAX_CLIENTS = 5
def handle_client(conn, addr):
print(f'Connected by {addr}')
while True:
data = conn.recv(1024)
if not data:
break
print(f'Received {repr(data)} from {addr}')
conn.sendall(b'Hello, World!')
conn.close()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print(f'Server started on {HOST}:{PORT}')
threads = []
while True:
if len(threads) >= MAX_CLIENTS:
continue
conn, addr = s.accept()
t = threading.Thread(target=handle_client, args=(conn, addr))
t.start()
threads.append(t)
위의 코드는 Max_CLIENTS 수를 5로 설정하였습니다. 또한, 클라이언트의 연결 요청이 수신되면, 새로운 Thread를 생성하여 handle_client() 함수를 실행합니다. 이를 통해 다중 클라이언트의 연결 요청을 동시에 처리할 수 있도록 구현되었습니다.
위의 사례와 같이 MAX_CLIENTS 값을 설정하지 않으면, 서버는 클라이언트의 연결 요청을 계속해서 받을 수 있으며 이에 따라 더 많은 연결 요청을 처리하게 됩니다. 하지만, 서버의 자원(메모리, CPU 등) 모두 소진할 가능성이 있기 때문에 이를 방지하기 위해서는 서버의 자원 상태에 따라 연결 수를 조절할 필요가 있습니다.
이상으로, Thread를 사용하여 다중 클라이언트의 데이터를 송수신하는 방법에 대해 알아보았습니다.
728x90
LIST
'Python > TCP IP' 카테고리의 다른 글
[Python, TCP/IP] TCP/IP 개념 & 예제 코드 (0) | 2023.03.01 |
---|
Comments