コード例 #1
0
        internal P2PConnectionImpl(LocalHostConfig config) : base(new UdpSocket(), new EncryptorGenerator())
        {
            m_IsOwner = true;
            m_CookieProvider.Update();
            m_Socket.Bind(new IPEndPoint(config.Address, 0), false);
            SelfId = Random.GenInt();
            P2PTask.CreateHostRandamKey();
            var randamKey = P2PTask.GetHostRandamKey();
            var data      = new PeerToPeerRoomData(SelfId, m_CookieProvider.Cookie, randamKey).Pack();

            m_DiscoveryService = new DiscoveryService(config.RoomName, m_Socket.LocalEP, data, config.DiscoveryServicePort);
            m_DiscoveryService.OnHolePunchRequest += (ep) =>
            {
                var packet = new DiscoveryHolePunch().Pack();
                m_Socket.Send(packet, 0, packet.Length, ep);
            };
            m_DiscoveryService.Start(config.DiscoveryQueryMatch);
        }
コード例 #2
0
        public static P2PHostConnection StartLocalHost(LocalHostConfig config)
        {
            var impl = new P2PConnectionImpl(config);

            return(new P2PHostConnection(impl));
        }