예제 #1
0
        public static void Connect(string ip, int port, params object[] data)
        {
            Peer = new NetClient(DefaultConfiguration);
            Peer.Start();
            var hailMessage = Peer.CreateMessage();

            foreach (var o in data)
            {
                hailMessage.Write(o);
            }
            Peer.Connect(ip, port, hailMessage);
        }
예제 #2
0
        private static void DoInit()
        {
            if (IsHost)
            {
                NetPeerConfiguration config = new NetPeerConfiguration("MonoPlatformerGame");
                config.Port = DataStorage.GetLocalPlayerConfig().ServerPort;
                config.MaximumConnections = 32;
                config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
                config.EnableUPnP = true;
                netPeer = new NetServer(config);
                netPeer.Start();
                netPeer.UPnP.ForwardPort(DataStorage.GetLocalPlayerConfig().ServerPort, "Server port");
                JapeLog.WriteLine("Server Started");
                Initialized = true;
            }
            else
            {
                NetPeerConfiguration config = new NetPeerConfiguration("MonoPlatformerGame");
                config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
                netPeer = new NetClient(config);

                NetOutgoingMessage hailMessage = CreateMessage();
                hailMessage.Write((int)DataType.Login);
                hailMessage.Write("Hello there");
                netPeer.Start();
                netPeer.Connect(DataStorage.GetLocalPlayerConfig().ServerIP, DataStorage.GetLocalPlayerConfig().ServerPort, hailMessage);
                Initialized = true;
            }
            //JapeLog.WriteLine("Connected to Server");
        }
예제 #3
0
        /// <summary>
        /// Подключение к P2P сервису. Для создания UDP окна.
        /// </summary>
        /// <param name="remotePoint">Адрес сервиса.</param>
        internal void ConnectToService(IPEndPoint remotePoint)
        {
            ThrowIfDisposed();

              if (Interlocked.CompareExchange(ref state, (int)PeerState.ConnectedToService, (int)PeerState.NotConnected) != (int)PeerState.NotConnected)
            throw new InvalidOperationException("Peer has not right state.");

              if (handler != null && handler.Status == NetPeerStatus.Running)
            throw new ArgumentException("Already runned.");

              var config = new NetPeerConfiguration(NetConfigString);
              config.Port = 0;
              config.AcceptIncomingConnections = true;
              config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);

              if (remotePoint.AddressFamily == AddressFamily.InterNetworkV6)
            config.LocalAddress = IPAddress.IPv6Any;

              handler = new NetPeer(config);
              syncContext.Send(p => ((NetPeer)p).RegisterReceivedCallback(ReceivedCallback), handler);
              handler.Start();

              var hailMessage = handler.CreateMessage();
              using (var client = ClientModel.Get())
              {
            var localPoint = new IPEndPoint(Connection.GetIPAddress(remotePoint.AddressFamily), handler.Port);

            hailMessage.Write(client.User.Nick);
            hailMessage.Write(localPoint);
              }

              serviceConnection = handler.Connect(remotePoint, hailMessage);

              ClientModel.Logger.WriteDebug("AsyncPeer.ConnectToService({0})", remotePoint);
        }
 public void Connect(IPEndPoint target)
 {
     _logger.ConnectingTo(target);
     _peer.Connect(target);
 }
 public void Connect(IPEndPoint target)
 {
     _peer.Connect(target);
 }