티스토리 뷰

개발/일상

c++ stun p2p chat

clucle 2021. 1. 30. 21:46

github.com/clucle/boost-asio-udp-holepunching

 

clucle/boost-asio-udp-holepunching

Contribute to clucle/boost-asio-udp-holepunching development by creating an account on GitHub.

github.com

www.youtube.com/watch?v=AvhqZXCkYcI

 

- 채팅 구현을 목적으로 해서 유저 지우기나, ipV6 같은 기능은 구현하지 않았습니다.

 

1. stun 서버에 udp 소켓을 열어 공용 ip, port를 얻는다.

 

2. 공용 ip, port 를 서버에 보낸다.

 & 서버에서 해당 ip, port 로 테스트 패킷을 보내 잘 동작하면 p2p 가능한 유저로 설정한다.

 & 접속한 유저에게는 이미 접속한 유저의 ip, port를 전달

 & 이미 접속해 있던 유저는 새로 들어온 유저의 ip,port를 전달

 

3. ip, port를 공유하여 서로 채팅이 가능하도록 한다.

 

 

 

>> P2P는 NAT 설정마다 가능 여부가 갈리는데, 만약 불가능하다면 Relay 서버를 통해 통신해야한다.

>> 아래는 iptime 에서 P2P 사용시 해당 설정을 해줘야 통신이 가능했던 사진이다.

 

'개발 > 일상' 카테고리의 다른 글

vscode 잘못된 빨간 줄 제거하기 ( false red underline )  (1) 2021.02.23
visual studio 주석 지우기 (//)  (2) 2021.02.21
get cockroach labs T shirt  (0) 2021.01.11
2020년 간단 회고록  (0) 2021.01.01
golang big integer  (0) 2020.12.23
댓글