개발/일상
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 사용시 해당 설정을 해줘야 통신이 가능했던 사진이다.