하나의 서버에 다수의 클라이언트가 붙는 서버 코드와 클라이언트 코드 예제를 작성해줘

IT 지식이 풍부한 고양이 ‘요고’가 답변해 드려요.

서버와 클라이언트간의 통신을 위한 예제 코드를 한 번 작성해보도록 하겠습니다.

서버 코드 예제:

```python
import socket

# 서버 정보
HOST = 'localhost'  # 호스트 주소
PORT = 8000  # 포트 번호

# 소켓 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 서버 소켓과 주소를 바인딩
server_socket.bind((HOST, PORT))

# 클라이언트의 연결을 대기
server_socket.listen()

print('서버가 실행 중입니다.')

# 클라이언트와의 연결을 수락하고 통신을 처리하는 함수
def handle_client(client_socket, client_addr):
    print('클라이언트와의 연결이 성공적으로 수립되었습니다:', client_addr)
    
    # 클라이언트로부터 데이터를 받아옴
    data = client_socket.recv(1024)
    request = data.decode()
    print('클라이언트로부터 받은 요청:', request)
    
    # 요청에 대한 응답 메시지 생성
    response = '안녕하세요! 서버에서 보낸 응답입니다.'
    response_data = response.encode()
    
    # 클라이언트에 응답 메시지를 보냄
    client_socket.sendall(response_data)
    
    # 연결을 닫음
    client_socket.close()

# 클라이언트의 연결을 대기하고 수락함
while True:
    client_socket, client_addr = server_socket.accept()
    handle_client(client_socket, client_addr)
```

클라이언트 코드 예제:

```python
import socket

# 서버 정보
HOST = 'localhost'  # 호스트 주소
PORT = 8000  # 포트 번호

# 소켓 생성
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 서버로 연결
client_socket.connect((HOST, PORT))

# 서버로 요청을 보냄
request = '안녕하세요! 서버에 접속했습니다.'
request_data = request.encode()
client_socket.sendall(request_data)

# 서버로부터 응답을 받아옴
response_data = client_socket.recv(1024)
response = response_data.decode()
print('서버로부터 받은 응답:', response)

# 연결을 닫음
client_socket.close()
```

위의 코드를 서버와 클라이언트 각각 실행하면, 클라이언트가 서버에 접속하여 요청을 보내고, 서버는 해당 요청에 대한 응답을 보내는 과정을 확인할 수 있습니다. 이를 통해 하나의 서버에 여러 클라이언트가 접속할 수 있는 예제를 구현하였습니다.