[참조] https://uiandwe.tistory.com/1245
파이썬, 에코 서버/클라이언트 예제
글. 수알치 오상문
[echo-server.py]
import socket
HOST = "127.0.0.1" # 서버 IP: 'localhost'
PORT = 9999 # 서버 포트 (1023 이후이고 미사용중인 포트 지정)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}, Hello!")
while True:
data = conn.recv(1024)
if data.decode('utf-8') == 'quit':
print("Received:", data.decode('utf-8'))
conn.sendall(data) # 메아리~
print('Goodbye!')
break
if data:
print("Received:", data.decode('utf-8'))
conn.sendall(data) # 메아리~
s.close()
[echo-client.py]
import socket
HOST = "127.0.0.1" # 접속할 서버 IP: 'localhost'
PORT = 9999 # 접속할 서버 포트
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((HOST, PORT))
except ConnectionRefusedError as e:
print('서버에 연결할 수 없습니다.')
print('1. 서버의 ip주소와 포트번호가 올바른지 확인하십시오.')
print('2. 서버 실행 여부를 확인하십시오.')
print('ERROR:', e)
exit(1)
while True:
try:
send_data = input('Input (종료=quit입력: ) ')
s.sendall(bytes(send_data, encoding='utf-8'))
recv_data = s.recv(1024)
if recv_data.decode('utf-8') == 'quit':
print('Goodbye!')
break
print("Received:", recv_data.decode('utf-8'))
except Exception as e:
print('ERROR:', e)
break
s.close()
서버와 클라이언트를 실행하고 테스트하는 절차는 다음과 같습니다.
1. 커맨드창(cmd)을 열고 서버를 실행합니다. (Windows)
python echo-server.py
2. 다른 커맨드창(cmd)을 열고 클라이언트를 실행합니다. (Windows)
python echo-client.py
3. 클라이언트에 메시지를 입력하고 엔터를 누르면, 서버에 전송되고, 서버는 같은 메시지를 돌려줍니다.
4. 종료하려면 quit를 입력하고 엔터를 누릅니다.
[실행 화면]
'Python 활용' 카테고리의 다른 글
파이썬, 대용량 이진 파일에서 여러 개 패턴 데이터를 검색하는 예제 (0) | 2023.03.08 |
---|---|
파이썬, 이미지 파일과 base64 문자열 변환 예제 (0) | 2023.02.25 |
파이썬, PDF 파일 저장 예제 (ReportLab) (0) | 2023.02.16 |
파이썬, SimpleHTTPServer / http.server 사용 (0) | 2023.02.09 |
파이썬, 유튜브 동영상 다운로드 (0) | 2023.01.23 |