IT 지식이 풍부한 고양이 ‘요고’가 답변해 드려요.
파이썬에서 소켓을 사용하여 서버와 클라이언트가 통신하는 예제를 작성해드릴게요.
먼저, 서버 측의 코드를 작성해볼까요? 서버는 클라이언트의 연결을 받아들이는 역할을 합니다. 다음은 간단한 예제입니다.
```python
import socket
# 서버의 IP 주소와 포트 번호를 지정합니다.
HOST = '127.0.0.1'
PORT = 12345
# AF_INET은 IPv4 주소 체계를 사용하고, SOCK_STREAM은 TCP를 사용하는 소켓을 생성합니다.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 서버 소켓을 지정된 IP 주소와 포트 번호에 bind합니다.
server_socket.bind((HOST, PORT))
# 클라이언트의 연결 요청을 기다립니다.
server_socket.listen()
# 클라이언트의 연결 요청을 수락합니다.
client_socket, addr = server_socket.accept()
# 클라이언트와의 통신을 위한 루프입니다.
while True:
# 클라이언트로부터 데이터를 받습니다.
data = client_socket.recv(1024)
if not data:
# 클라이언트가 접속을 종료하면 루프를 종료합니다.
break
# 받은 데이터를 출력합니다.
print('Received from client:', data.decode())
# 클라이언트에게 데이터를 보냅니다.
client_socket.sendall(data)
# 소켓을 닫습니다.
client_socket.close()
server_socket.close()
```
다음으로, 클라이언트 측의 코드를 작성해볼까요? 클라이언트는 서버에 연결하여 데이터를 전송하고, 서버로부터 데이터를 받는 역할을 합니다. 다음은 간단한 예제입니다.
```python
import socket
# 서버의 IP 주소와 포트 번호를 지정합니다.
HOST = '127.0.0.1'
PORT = 12345
# 서버와의 연결을 위해 소켓을 생성합니다.
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 서버에 연결을 시도합니다.
client_socket.connect((HOST, PORT))
# 서버로 데이터를 보냅니다.
data = 'Hello, server!'
client_socket.sendall(data.encode())
# 서버로부터 데이터를 받습니다.
received_data = client_socket.recv(1024)
# 받은 데이터를 출력합니다.
print('Received from server:', received_data.decode())
# 소켓을 닫습니다.
client_socket.close()
```
위의 코드 예제는 TCP를 사용한 기본적인 소켓 통신을 보여줍니다. 서버와 클라이언트 간에 데이터를 주고받을 수 있습니다. 실제로 동작하려면 서버와 클라이언트가 같은 IP 주소와 포트 번호를 사용하도록 설정해야 합니다.