파이썬 소켓 통신 예제를 작성해줘

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

물론입니다! 파이썬 소켓 통신 예제를 준비해보겠습니다. 다음은 클라이언트와 서버 사이의 TCP 연결을 수립하고 메시지를 주고받는 간단한 예제입니다:

1. 서버 소켓 예제:

```python
import socket

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

# 서버 주소와 포트 설정
host = '127.0.0.1'  # 서버 IP 주소
port = 1234  # 서버 포트 번호
server_address = (host, port)

# 서버 소켓을 지정한 주소와 포트와 바인딩
server_socket.bind(server_address)

# 클라이언트 연결 대기
server_socket.listen(1)
print('서버가 시작되었습니다.')

while True:
    # 클라이언트 연결 수락
    client_socket, client_address = server_socket.accept()
    print(f'클라이언트가 접속했습니다: {client_address}')

    try:
        # 클라이언트로부터 데이터 수신
        data = client_socket.recv(1024)
        print(f'수신한 데이터: {data.decode()}')

        # 클라이언트로 응답 전송
        message = '서버에서 보낸 메시지: 안녕하세요, 클라이언트님!'
        client_socket.sendall(message.encode())

    finally:
        # 클라이언트 소켓 닫기
        client_socket.close()
```

2. 클라이언트 소켓 예제:

```python
import socket

# 서버 주소와 포트 설정
host = '127.0.0.1'  # 서버 IP 주소
port = 1234  # 서버 포트 번호
server_address = (host, port)

# 서버에 연결
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(server_address)
print('서버에 연결되었습니다.')

try:
    # 서버로 메시지 전송
    message = '안녕하세요, 서버님!'
    client_socket.sendall(message.encode())

    # 서버로부터 응답 수신
    data = client_socket.recv(1024)
    print(f'수신한 데이터: {data.decode()}')
    
finally:
    # 클라이언트 소켓 닫기
    client_socket.close()
```

위 예제는 기본적인 클라이언트와 서버 간의 TCP 통신을 보여줍니다. 서버는 클라이언트로부터 데이터를 수신하고 응답을 전송하며, 클라이언트는 서버에 메시지를 전송하고 응답을 받습니다. 실제로 실행하려면 서버와 클라이언트를 각각 다른 터미널에서 실행하면 됩니다. 추가로 보안과 예외 처리를 적절히 추가하여 안정성을 높일 수 있습니다.요고가 도움이 되었길 바랍니다! 더 궁금한 점이 있으면 언제든지 물어보세요!