P2P도 소켓 쓰는 것 맞습니다. 다만 P2P로 통신하는 클라끼리 잘 통신하려면 홀펀칭과 릴레이라는 것을 해주어야 합니다.
이거 생각보다 만들기 골치아픕니다. 홀펀칭 실패, 홀펀칭 증발, 릴레이 서버 과부하, 중국 네트워크 오동작, 라우터 버그, 네트워크 보안 장치의 과잉 진압 등등...
그래서 P2P 네트워크 라이브러리가 쓰이기도 합니다. 상용 퀄러티의 앱을 개발하실거라면, 프라우드넷을 써보시는 것도 좋습니다.
사용법은 간단합니다. 그냥 서버에서 클라들끼리 P2P로 통신 맺어라~ 라는 함수를 호출해주면 클라에서는 즉시 P2P로 통신할 수 있는 상태가 됩니다. 그리고 상대방 클라에게 데이터를 보내는 함수를 호출하면 그냥 갑니다. 공유기 문제,홀펀칭 등등 이슈들은 프라우드넷 안에서 알아서 다 해줍니다. 덤으로, 압축,암호화,통신량 제어 등도 해주는 기능들도 있습니다.
P2P도 소켓 쓰는 것 맞습니다. 다만 P2P로 통신하는 클라끼리 잘 통신하려면 홀펀칭과 릴레이라는 것을 해주어야 합니다.
이거 생각보다 만들기 골치아픕니다. 홀펀칭 실패, 홀펀칭 증발, 릴레이 서버 과부하, 중국 네트워크 오동작, 라우터 버그, 네트워크 보안 장치의 과잉 진압 등등...
그래서 P2P 네트워크 라이브러리가 쓰이기도 합니다. 상용 퀄러티의 앱을 개발하실거라면, 프라우드넷을 써보시는 것도 좋습니다.
사용법은 간단합니다. 그냥 서버에서 클라들끼리 P2P로 통신 맺어라~ 라는 함수를 호출해주면 클라에서는 즉시 P2P로 통신할 수 있는 상태가 됩니다. 그리고 상대방 클라에게 데이터를 보내는 함수를 호출하면 그냥 갑니다. 공유기 문제,홀펀칭 등등 이슈들은 프라우드넷 안에서 알아서 다 해줍니다. 덤으로, 압축,암호화,통신량 제어 등도 해주는 기능들도 있습니다.