UDP 홀펀칭
udp홀펀칭 음성방송 구현 방법 시나리오
개요 : stun서버와 서버 & 클라이언트 다수로 구성된다.
stun서버는 서버와 클라이언트 정보를 받으며 릴레이 기능을 더한다.
접속을 시도하면 먼저 stun서버로 udp패킷을 전송한다.
stun서버는 접속자로부터 방이름, 아이디, 내부ip, 내부port , 외부ip, 외부port, 접속방법(server, client) 를 받아 등록한다. (addClient) 유니크값 : 방이름 + 아이디
stun서버에 이미 등록된 방이름에 아이디가 있는지 검사 만약 있다면 연결실패 메세지를 보낸다. (이유 : 방안에 해당 아이디 존재)
if 클라이언트가 stun서버에 접속을 먼저 하게 되면 방이름으로 해당 서버가 있는지 검사 없으면 연결실패를 알려준다.
if 서버가 stun서버에 접속을 하면 stun서버와 통신을 주고받은후에 클라이언트가 접속할때 까지 대기를 한다.
% 클라이언트가 올때마다 반복되는 구문이다. %
클라이언트가 접속 stun서버는 서버에게 클라이언트 정보를 전송한다.
전송 받은 서버는 클라이언트에게 udp패킷을 전달하여 통신이 이루어지는지 확인한다. 1초간 다량의 데이타를 주고받는다.
if 통신실패이면 실패된 아이디를 stun서버에게 전달한다. stun서버는 해당방에 실패된 목록을 저장하여 릴레이 역할을 한다.
if 성공하면 성공리스트는 서버에 리스트로 관리 저장한다.
이젠 홀펀칭을 마쳤으면 서버는 음성데이타를 전송하는데 리스트를 바탕으로해서 전송하게 된다. 리스트에는 stun서버, 각각의 연결성공된 클라이언트에게 전송하면 된다.
stun서버느 서버로 부터 받은 데이타를 방정보와 릴레이로 전달할 클라이언트에게 데이타를 전달한다
서버 클라이언트 , stun서버는 rtp모듈을 가지고 있으며 실패 음성데이타를 전송할때 사용한다.
개요 : stun서버와 서버 & 클라이언트 다수로 구성된다.
stun서버는 서버와 클라이언트 정보를 받으며 릴레이 기능을 더한다.
접속을 시도하면 먼저 stun서버로 udp패킷을 전송한다.
stun서버는 접속자로부터 방이름, 아이디, 내부ip, 내부port , 외부ip, 외부port, 접속방법(server, client) 를 받아 등록한다. (addClient) 유니크값 : 방이름 + 아이디
stun서버에 이미 등록된 방이름에 아이디가 있는지 검사 만약 있다면 연결실패 메세지를 보낸다. (이유 : 방안에 해당 아이디 존재)
if 클라이언트가 stun서버에 접속을 먼저 하게 되면 방이름으로 해당 서버가 있는지 검사 없으면 연결실패를 알려준다.
if 서버가 stun서버에 접속을 하면 stun서버와 통신을 주고받은후에 클라이언트가 접속할때 까지 대기를 한다.
% 클라이언트가 올때마다 반복되는 구문이다. %
클라이언트가 접속 stun서버는 서버에게 클라이언트 정보를 전송한다.
전송 받은 서버는 클라이언트에게 udp패킷을 전달하여 통신이 이루어지는지 확인한다. 1초간 다량의 데이타를 주고받는다.
if 통신실패이면 실패된 아이디를 stun서버에게 전달한다. stun서버는 해당방에 실패된 목록을 저장하여 릴레이 역할을 한다.
if 성공하면 성공리스트는 서버에 리스트로 관리 저장한다.
이젠 홀펀칭을 마쳤으면 서버는 음성데이타를 전송하는데 리스트를 바탕으로해서 전송하게 된다. 리스트에는 stun서버, 각각의 연결성공된 클라이언트에게 전송하면 된다.
stun서버느 서버로 부터 받은 데이타를 방정보와 릴레이로 전달할 클라이언트에게 데이타를 전달한다
서버 클라이언트 , stun서버는 rtp모듈을 가지고 있으며 실패 음성데이타를 전송할때 사용한다.
댓글
댓글 쓰기