2023. 2. 27. 19:53ㆍ통신 관련
1. 서버 클래스 객체를 생성
생성할 때 프로그램의 포트 넘버를 할당한다.
2. 소켓 객체의 accept 메소드를 호출한다.
클라이언트가 해당 포트로 연결을 시도한다면 accept 메소드는 대기를 풀고 클라이언트와 연결시키는 soket 클래스를 생성하여 반환한다.
자 여기서 accept 메소드에서 받은 ous가 클라이언트와 일대일로 연결된 소켓이다.
그럼 ous로 클라언트와 통신이 가능해진다.
ous 객체로 서버에서 전달한 메시지를 작성해서 전달하면? 끝!
ServerSocket으로 연결대기하다가 Client가 연결을 시도하면 Socket을 생성하여 해당 데이터 소켓으로 데이터를 주고받음
자 그럼 이제 클라이언트에서 통신 모듈을 작성해보자
socket 모듈을 이용해 소켓 객체를 생성하는 방식은 아래와 같다.
socket_c=socket.socket(Socket Family, Socket Type, Socket Protocols)
socket을 생성하기 위해 변수를 선언하고 socket()은 함수 이름이다. 이때 socket() 함수에는 세 개의 인자가 필요하다.
1. socket family: 소켓에서 사용할 주소 형식을 지정해준다.
ex) socket.AF_UNIX, socket.AF_INET, socket.AF_INET6,socket.PF_PACKET 등이 있다.
이중 socket.AF_INET은 IPv4 주소를 의미한다. 예전에 소캣 프로그램으로 채팅 프로그램에서도 자주 사용하던 거다. 예를 들어 127.0.0.1 이다.
2. socket type: 서버와 클라이언트 사이에서 사용하는 전송 유형을 설정한다.
UDP방식이냐 vs TCP방식
ex) socket.SOCK_DGRAM, sock.SOCK_STREAM 등이 있다. 아시다시피
DGRAM은 UDP방식을 의미하고 STREAM은 TCP방식을 의미한다. 채팅 프로그램에서는 STREAM방식을 이용한다.
3. socket protocols: 소켓 타입을 설정한 뒤 소켓 타입을 더욱 세부적으로 구분할 때 사용한다.
ex) socket.IPPROTO_UDP, socket.IPPROTO_TCP 등이 있다. 소켓 객체를 생성할 때는 흔히 소켓 프로토콜을 생갹하거나 0으로 설정한다.
아래 예제 3가지 방식 같은 경우 UDP 소켓 객체 생성 방식이 모두 동일하다.
socket1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket2=socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
socket3=socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
TCP 소켓 방식도 UDP 객체 생성 방식이랑 동일하다.
socket1=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket2=socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
socket3=socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
'통신 관련' 카테고리의 다른 글
[Vue.js] 로그인 Token 기반 인증 (0) | 2023.02.27 |
---|