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