-
Socket ?Programming/Python 2023. 10. 12. 10:45
소켓을 만들어서 네트워크에 접속해야함. 접속하기 위해 ip주소를 가져야 함. 상대방과 나를 연결시키는.
Socket ?
: 양방향 통신 채널의 종단점 end point
- 통신을 위해서는 프로그램이 socket에 반드시 접속해야 함
- socket 모듈은 실제 데이터를 처리하기 위한 socket 클래스 포함
- socket 모듈은 호스트에 관한 정보를 알아내고, 클래스는 데이터를 송수신할 수 있는 다양한 메소드 제공socket - low level networking interface
HTTP - high level networking interfaceget address info , getfqdn , gethostbyname .. 등의 기능이 있음.
네트워크에서 호스트 검색하기
: socket 모듈에는 호스트 컴퓨터의 이름이나 주소를 검색할 수 있는 함수(메소드)가 포함되어 있다.1)socket.gethostname()2)socket.gethostbyname()3)socket.gethostbyname_ex()4)socket.getfqdn()5)socket.gethostbyaddr()class socket.socket 과 같이 클래스로 생성
IDLE 기본 : 인터프리터 모드
1) socket.gethostname : 자신이 사용하고 있는 컴퓨터(호스트) 이름 검색
2) socket.gethostbyname(호스트 이름) : 호스트 이름 -> 문자열 주소 변환(ip주소)
도메인 네임 통해서도 ip 주소 찾아가게 된다 : DNS 도메인네임서버가 그 역할을 해준다.
여러 인터넷 사이트의 ip주소 확인하는 프로그램
import socket HOSTS = [ 'www.daum.net', 'www.naver.com', 'www.python.org', 'testname', ] for host in HOSTS: try: print('{} : {}'.format(host, socket.gethostbyname(host))) except socket.error as msg: # ➊ print('{} : {}'.format(host, msg))
python run: F5, sourcefile must be saved
호스트 검색하기
gethostbyname_ex() 를 사용하여 많은 정보 알아내기.
gethostbyname_ex() 메서드는 hostname, aliaslist, ipaddrlist 를 튜플로 반환한다. : 표준 호스트 이름, 별칭, 사용가능한 모든 ip 주소 리스트import socket HOSTS = [ 'www.uou.ac.kr', 'www.sunchon.ac.kr', 'www.python.org', ] for host in HOSTS: print(host) try: name, aliases, addresses = socket.gethostbyname_ex(host) print(' Hostname:', name) print(' Aliases :', aliases) print(' Addresses:', addresses) except socket.error as emsg: print('ERROR:', emsg) print()
결과화면
[ ] in python : 리스트 ( 배열 )
for i in ( ) : ( ) 에는 리스트 또는 튜플이 들어감.
문자열 print({ } 가 나오면 c언어의 %d와 같은것 .
print('{ } : { }'.format(host, socket.gethostbyname(host)))[ 리스트 ]
( 튜플 )
{ 딕셔너리 }a,b,c = ( 튜플 ) : 각각 넣어줌, 하나의 값은 리스트로 올 수도 있음- getfqdn() : 완전한 도메인 이름 검색- gethostbyaddr(ipaddress) : 호스트 정보를 튜플로 반환 ( hostname, aliaslist, ipaddrist )
소켓은 주소 유형과 소켓 유형에 따라 데이터 전송 방식 결정
주소 유형 : 네트워크 계층의 프로토콜 지정
소켓 유형 : 전송 계층 프로토콜 지정파이썬이 지원하는 3가지 주소유형
- Af_INET : IPv4, 32비트 - 43억
- AF_INET6 : 트래픽 제어, 라우팅 기능 지원- AF_UNIX: 유닉스 도메인 소켓 ( UDS) 을 위한 주소 유형 거의 x인터넷에서 사용되는 소켓유형
1. SOCK_STREAM : 스트림 지향 전송용
- 신뢰성있는 전송을 보장하는 TCP 프로토콜 사용 : TCP 가 오류제어
- 클라이언트,서버 간의 타임 아웃 관리, 재전송 및 흐름 제어
- http 와 같이 대부분의 응용 프로토콜에서 사용2. SOCK_DGRAM (데이터그램)
- UDP 프로토콜 사용( 그냥 보내기만 ) , 비신뢰성 전송, 최선형 서비스
- TFTP, NTP 등
- 멀티캐스팅에서 사용
- 최선형 서비스 best effortwell-known port number
tcp 포트번호 :
socket. getservbyname('http')socket.getprotobyname('tcp') 프로토콜 가져오기
서비스 검색
import socket for port in [80,443, 21, 70, 25, 143, 993, 110, 995]: url ='{}://example.co.kr/'.format(socket.getservbyport(port)) print('{:4d}'.format(port),url)
'Programming > Python' 카테고리의 다른 글
0921 파이썬 노트 필기 (0) 2023.09.21 Python : List (0) 2023.09.19 파이썬 0907/ 0912 (0) 2023.09.12 코딩애플 : 빠르게 정리하는 파이썬 기초 문법 (0) 2022.11.21 1분 파이썬 (0) 2022.11.21