Python,module socket [소켓통신]
로우 레벨(low-level) 네트워킹 인터페이스이다.
socket은 아주 오래 전부터 사용된 개념이기 때문에 유닉스, 윈도우, 리눅스를 포함한 대부분의 플랫폼에서 사용할수 있다.
아래는 소켓으로 만든 간단한 서버와 클라이언트 예제이다
ex) socket_server.py : 소켓을 이용한 서버
# -*- coding : cp949 -*- import socket
HOST='' #호스트를 지정하지 않으면 가능한 모든 인터페이스를 의미한다. PORT=50007 #포트지정 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1) #접속이 있을때까지 기다림 conn, addr=s.accept() #접속 승인 print('Connected by',addr) while True: data=conn.recv(1024) if not data: break conn.send(data) #받은 데이터를 그대로 클라이언트에 전송 conn.close() |
ex) socket_client.py : socket_server와 통신할 클라이언트
# -*- coding : cp949 -*- import socket
HOST='127.0.0.1' #localhost PORT=50007 #서버와 같은 포트사용 s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #소켓생성 s.connect((HOST,PORT)) s.send(b'Hello, python') #문자를 보냄 data=s.recv(1024) #서버로 부터 정보를 받음 s.close() print('Received',repr(data)) |
위 소스의 실행절차는 아래와 같다.
1. 서버실행
#socket_servet.py |
2. 클라이언트실행
#socket_client.py |
3. 서버측에서 연결이 되었다는 메시지 출력
Connected by ('127.0.0.1', 3006) |
4. 클라이언트측에서 서버에서 받은 정보 출력
Received b'Hello, python' |
참조 : 빠르게 활용하는 파이썬3 프로그래밍