Skip to content

start_server 변경 #10

@junsarakill

Description

@junsarakill

클라이언트 소켓을 저장할 리스트

clients = []

def handle_client(conn, addr):
"""클라이언트의 요청을 처리하는 함수"""
global clients
clients.append(conn) # 클라이언트를 리스트에 추가
print(f"클라이언트와 연결되었습니다: {addr}")

try:
    while True:  # 클라이언트와 데이터 통신
        data = conn.recv(BUFFER_SIZE).decode()
        if not data:
            break
        print(f"받은 데이터: {data}")

        # 모든 클라이언트에 데이터 전송
        for client in clients:
            if client != conn:  # 데이터를 보낸 클라이언트를 제외
                client.send(data.encode())
finally:
    conn.close()  # 클라이언트와의 연결 종료
    clients.remove(conn)  # 클라이언트 리스트에서 제거
    print(f"클라이언트와의 연결이 종료되었습니다: {addr}")

def start_server():
"""서버를 시작하여 클라이언트로부터 데이터를 수신"""
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((TCP_IP, TCP_PORT))
server_socket.listen(5) # 최대 5개의 클라이언트를 대기
print("서버가 시작되었습니다. 클라이언트 연결을 기다리는 중...")

while True:
    conn, addr = server_socket.accept()  # 클라이언트 연결 수립
    # 각 클라이언트에 대해 새로운 스레드 생성
    threading.Thread(target=handle_client, args=(conn, addr)).start()

server_socket.close()  # 서버 소켓 종료

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions