socket.socket() 의 함수로 소켓을 생성 (소켓 통신을 할려면 소캣이 필요함)
AF_INET : IPv4
AF_INET6 : IPv6
소켓 타입 : raw소켓, 스트림 소켓, 데이터그램 소켓
보통 많이 쓰는 것 : SOCK_STREAM, SOCK_DGRAM
# socket.AF_INET, socket.SOCK_STREAM 조합은 "socket.socket()의인자의 기본 값임
그러므로 >> socket.socket()만 써도 됨
######################################################################
[[[[ Server ]]]]
- 바인드
서버가 소켓을 포트에 맵핑하는 행위 : 바인딩 >> sock.bind()
bind()호출 시 호스트림과 포트번호를 튜플로 감싸서 전달
ex) server_socket.bind((HOST,PORT))
HOST에 자신의 아이피, PORT에 클라이언트랑 연결할 포트
- 리스닝
이 메소드는 클라이언트가 바인드된 포트로 연결할 때 까지 기다리는 블럭킹 함수 >> listen()
accept()는 (소켓, 주소정보)로 구성된 튜플을 리턴 >> 이때 소켓은 객체로 클라이언트와 연결이 구성되어
실제로 데이터를 주고받을 수 있음 (소켓을 멀티스레드로 처리하면 1(Server):N(Client)의 연결도 됨)
-주고받기
sock.resv() : 소켓으로 부터 데이터를 읽을 때
>> 데이터를 읽어드릴 떄 버퍼의 크기를 전달 sock.recv(bufsize)는 최대 bufsize 바이트만큼의 데이터 읽어옴
ex) sock.recv(1024) 1024byte 만큼 데이터를 읽어옴
sock.sendall() : 소켓으로 부터 정보를 보낼 때
>> 보낼때도 똑같음
>>> 문자열을 주고받고 싶으면 인코딩/디코딩을 해서 주고받아야 함
- 닫기
: sock.close()
[[[[ Client ]]]]
: 서버랑 거의 비슷함, 한가지 다른 점은 바인드나 리스닝의 과정이 필요 없음
>> 클라이언트는 능동적으로 서버에 연결함
- 참고링크
'Programming > Python' 카테고리의 다른 글
[ Python M ] 문자열 변환 : maketrans (2) | 2020.11.01 |
---|---|
[ Python note ] 정수 1개 입력받아 나누어 출력 (0) | 2020.10.02 |
[ Python ] selenium 설치 및 환경설정 (0) | 2020.09.25 |
[ Python ] opencv-python, pyautogui (0) | 2020.08.21 |
[ Python ] 다운로드 및 환경셋팅 & pip 설치 & pip 업데이트 (0) | 2020.08.21 |