예제 #1
0
 public void udp_OnDeactive(UDPConnection uc)
 {
     buttonUdpStart.Enabled = true;
     buttonUdpStop.Enabled = false;
     if(FormMain.LOG_MSG)
         logger.AddMsg("UDP����ֹͣ");
 }
예제 #2
0
        protected NetworkInterface(UDPConnection udpConnection, Logger logger)
        {
            Logger = logger;

            ClientConnections = new NetworkConnectionPool();
            In  = new NetworkInput(ClientConnections);
            Out = new NetworkOutput(ClientConnections);

            ErrorHandling = new NetworkErrorHandling(ClientConnections, this);

            UdpConnection                 = udpConnection;
            UdpConnection.Logger          = logger;
            UdpConnection.OnReceiveError += ErrorHandling.HandleUDPReceiveError;
            UdpConnection.OnSendError    += ErrorHandling.HandleUDPSendError;
            UdpConnection.InitializeReceiving();

            KeepAliveInterval = 1000;
            m_keepAlive       = true;

            HolePunchingInterval = 1000;
            m_holePunching       = false;

            Thread keepAliveThread = new Thread(KeepAliveLoop);

            keepAliveThread.Name = "Keep alive";
            keepAliveThread.Start();
        }
예제 #3
0
        public void SetUDPConnection(UDPConnection udpConnection)
        {
            UdpData = new SingleBuffer <DataWrapper <byte[]> >();

            UdpConnection = udpConnection;
            UdpConnection.DataReceivedEvent += ReceiveUDP;
        }
예제 #4
0
 void Update()
 {
     if (Input.GetKeyDown("p"))
     {
         UDPConnection.Send(new Ping());
     }
 }
예제 #5
0
파일: Client.cs 프로젝트: marktabz/EncodeMe
        private static async void PingHandler(PacketHeader packetHeader, Connection connection, string incomingObject)
        {
            var ip       = (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint;
            var localEPs = Connection.AllExistingLocalListenEndPoints();
            var lep      = "";

            foreach (var localEP in localEPs[ConnectionType.UDP])
            {
                var lEp = (IPEndPoint)localEP;
                if (!ip.Address.IsInSameSubnet(lEp.Address))
                {
                    continue;
                }
                lep = lEp.Address.ToString();
                break;
            }

            var sent = false;

            while (!sent)
            {
                try
                {
                    UDPConnection.SendObject($"PONG{lep}", "https://github.com/awooo-ph", ip, NetworkComms.DefaultSendReceiveOptions,
                                             ApplicationLayerProtocolStatus.Enabled);
                    sent = true;
                    break;
                }
                catch (Exception)
                {
                    await TaskEx.Delay(100);
                }
            }
        }
        protected override void OnStart(string[] args)
        {
            Common.InitialiseLogFolder();
            Log.Info("OnStart");

            try
            {
                Log.Debug("Starting UDP listener");
                NetworkComms.AppendGlobalIncomingPacketHandler <string>("Plugin", PluginMessageReceived);
                NetworkComms.AppendGlobalIncomingPacketHandler <string>("Commmand", MethodMessageReceived);
                NetworkComms.AppendGlobalIncomingPacketHandler <string>("Method", MethodMessageReceived);
                //Start listening for incoming UDP data
                UDPConnection.StartListening(new IPEndPoint(IPAddress.Any, 10051));
                Log.Debug("UPD Listener started");
            }
            catch (Exception ex)
            { Log.Error("Error starting listener", ex); }

            Common.CheckComputerObject(serviceObject);

            Thread loadPluginsThread = new Thread(() => LoadPlugins(serviceObject));

            loadPluginsThread.Start();


            //  Thread loadPluginsThread = new Thread(new ThreadStart(LoadPlugins));
            // loadPluginsThread.Start();

            //Clock.Interval = 5000;
            //Clock.Start();
            //Clock.Elapsed += new System.Timers.ElapsedEventHandler(checkConnection);
            Log.Info("OnStart Completed");
            OSAEObjectStateManager.ObjectStateSet(serviceObject, "ON", serviceObject);
        }
        public static void RunExample()
        {
            //Ensure we use the null serializer for unmanaged connections
            SendReceiveOptions options = new SendReceiveOptions <NullSerializer>();

            //Setup listening for incoming unmanaged UDP broadcasts
            UDPConnectionListener listener = new UDPConnectionListener(options, ApplicationLayerProtocolStatus.Disabled, UDPOptions.None);

            Connection.StartListening(listener, new IPEndPoint(IPAddress.Any, 10000));

            //Add a packet handler for unmanaged connections
            NetworkComms.AppendGlobalIncomingUnmanagedPacketHandler((packetHeader, connection, incomingBytes) => {
                Console.WriteLine("Received {0} bytes from {1}", incomingBytes.Length, connection.ConnectionInfo.RemoteEndPoint);
            });

            //Generate some test data to broadcast
            byte[] dataToSend = new byte[] { 1, 2, 3, 4 };

            //Create an unmanaged packet manually and broadcast the test data
            //In future this part of the API could potentially be improved to make it clearer
            using (Packet sendPacket = new Packet("Unmanaged", dataToSend, options))
                UDPConnection.SendObject <byte[]>(sendPacket, new IPEndPoint(IPAddress.Broadcast, 10000), options, ApplicationLayerProtocolStatus.Disabled);

            Console.WriteLine("Client done!");
            Console.ReadKey();
        }
예제 #8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Connection.StartListening(ConnectionType.UDP, new IPEndPoint(IPAddress.Any, 10000));

            NetworkComms.AppendGlobalIncomingPacketHandler <string>("RegisterServerAddress", (packetHeader, connection, incomingString) =>
            {
                try
                {
                    if (ServerEndPoint == null)
                    {
                        var serverEndPoint = (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint;
                        var clientEndPoint = (IPEndPoint)connection.ConnectionInfo.LocalEndPoint;
                        //此端口tcp用
                        ServerEndPoint  = new IPEndPoint(serverEndPoint.Address, 10012);
                        button1.Enabled = true;
                        button1.Text    = $"TCP:{ServerEndPoint}";
                        textBox1.Text  += $"{DateTime.Now}>> server {ServerEndPoint} request connect.\r\n>";

                        textBox1.Text += $"{DateTime.Now}>> {clientEndPoint.Address} to {ServerEndPoint.Address} port:10001.\r\n>";

                        //connection.SendObject<long>("SendClientAddress", clientip);
                        UDPConnection.SendObject("RegisterClientAddress", clientEndPoint.Address.Address, new IPEndPoint(ServerEndPoint.Address, 10001));
                    }
                }
                catch (Exception ex)
                {
                    textBox1.Text += $"client error:{ex.Message}";
                }
            });
        }
예제 #9
0
파일: FormMain.Udp.cs 프로젝트: yfyf510/GPS
 void udpConnection_OnStop(UDPConnection uc)
 {
     try
     {
         this.BeginInvoke(new udp_OnDeactiveCallback(udp_OnDeactive), new object[] { uc });
     }
     catch { }
 }
예제 #10
0
 public void Datasend(byte[] buff)
 {
     // NetworkComms.SendObject("VOICE", buff, newUDPConn);
     //newUDPConn.SendObject<byte[]>("icecream", buff);
     //UDPConnection.SendObject<byte[]>("icecream", buff, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10000));
     UDPConnection.SendObject("icecream", buff, new IPEndPoint(IPAddress.Parse(ip), 10000));
     //Debug.WriteLine("sent");
 }
예제 #11
0
    IEnumerator Auth()
    {
        yield return(new WaitUntil(() => UDPConnection.init));

        string playerName = NameGenerator.GenerateName(4, 10);

        UDPConnection.Send(new AuthMessage(playerName));
    }
예제 #12
0
파일: SOCKS5.cs 프로젝트: Outworldz/UDProxy
        /// <summary>
        /// Processes bytes received from client
        /// </summary>
        /// <param name="bytes">Bytes to process and react to.</param>
        /// <returns>Returns true on success, false on failure (with error in Error property)</returns>
        public bool Process(MemoryStream stream, NetworkStream connection)
        {
            if (State == SOCKS5States.Disconnected)
            {
                // SOCKS5 HANDSHAKE
                var packet = new SOCKS5.PacketHandshake(stream);

                if (packet.METHODS != 0x0)
                {
                    throw new UDProxyException("Authentication is not yet supported!", new NotImplementedException());
                }

                UDProxy.DebugInfo("SOCKS5", "Responding to handshake request");
                if (Respond(new PacketReplyHandshake(), connection))
                {
                    State = SOCKS5States.Connected;
                    return(true);
                }
            }
            else if (State == SOCKS5States.Connected)
            {
                // SOCKS5 Connection Requests
                // We're connected, so we're dealing with requests
                var packet = new SOCKS5.PacketRequest(stream);
                PacketReplyRequest reply = new PacketReplyRequest(packet);

                // Set our client's remote endpoint expected port to the one it's given us
                // Weird type casting is nessecary for safe translation
                MyClient.Port = (int)BitConverter.ToUInt16(packet.PORT, 0);

                // It's not ok :(
                if (reply.REP != SOCKS5Protocol.REP.OK)
                {
                    Respond(reply, connection);
                    return(false);
                }

                switch (packet.CMD)
                {
                case SOCKS5Protocol.CMD.BIND:
                    throw new UDProxyException("CMD BIND not yet supported!");

                case SOCKS5Protocol.CMD.CONNECT:
                    throw new UDProxyException("CMD CONNECT not yet supported!");

                case SOCKS5Protocol.CMD.UDP_ASSOC:
                    UDPConnection.TryBegin(ref reply, MyClient);
                    Respond(reply, connection);
                    break;
                }
            }
            else
            {
                throw new UDProxyException("Unknown error (unimplemented function?)");
            }

            return(false);
        }
예제 #13
0
    public ClientApplication(UDPConnection connection, SynchronizationData synchronizationData) : base(connection, new NetworkLogger(true))
    {
        _synchronizationData = synchronizationData;
        _synchronizationData.myMeditation.valueChanged += OnMeditationChanged;

        SetMessageHandler <Ping>(OnPing);
        SetMessageHandler <ConnectionResponse>(OnConnectionResponse);
        SetMessageHandler <PlayerData>(OnOpponentUpdate);
    }
예제 #14
0
    private void Awake()
    {
        connection = new UDPConnection(port);
        connection.Listen(DataReceived, 5000);
        serializer     = new MessageSerializer();
        messageFactory = new MessageFactory();

        RegisterMessageHandlers();
    }
예제 #15
0
파일: FormMain.Udp.cs 프로젝트: yfyf510/GPS
 public void udp_OnDeactive(UDPConnection uc)
 {
     buttonUdpStart.Enabled = true;
     buttonUdpStop.Enabled  = false;
     if (FormMain.LOG_MSG)
     {
         logger.AddMsg("UDP服务停止");
     }
 }
예제 #16
0
    void Awake()
    {
        _connection = new UDPConnection(port);
        _connection.Listen(CommandReceived, 5000);
        _serializer     = new MessageSerializer();
        _messageFactory = new MessageFactory();

        RegisterMessageHandlers();
    }
예제 #17
0
    new void Start()
    {
        base.Start();
        _messageHandler = GetComponentInChildren <MatchMessageHandler>();
        _matchTcp       = GetComponent <MatchTCPConnection>();
        _matchUdp       = GetComponent <UDPConnection>();

        _messageHandler.NewMatch();
    }
예제 #18
0
        public UDPTraversal(string udpServerIP, int udpServerPort, Action <string, IPEndPoint> connected)
        {
            _serverIP   = IPAddress.Parse(udpServerIP);
            _serverPort = udpServerPort;
            _connected  = connected;

            _connection = CreateUDPConnection();

            NetworkComms.AppendGlobalIncomingPacketHandler <string>(PacketType.REQ_UDPP2PConnect, Connected);
        }
예제 #19
0
    void Start()
    {
        GameObject matchHandler = GameObject.Find("MatchHandler");

        if (matchHandler != null)
        {
            _matchTcp = matchHandler.GetComponent <MatchTCPConnection>();
            _matchUdp = matchHandler.GetComponent <UDPConnection>();
        }
    }
예제 #20
0
        public void CloseChannelUDP()
        {
            _comm.SendCommand(PepperlCmd.ScanStop,
                              PepperlConst.ParamUdpHandle, _handle);

            _udp?.Close();
            _udp = null;

            _handle = null;
        }
예제 #21
0
    public ServerApplication(UDPConnection connection, bool registerFakeClient) : base(connection, new NetworkLogger(false))
    {
        if (registerFakeClient)
        {
            RegisterFakeClient();
        }

        SetMessageHandler <ConnectionRequest>(OnConnectionRequest);
        SetMessageHandler <MeditationMessage>(OnMeditationMessage);
        SetMessageHandler <ReadyNotification>(OnReadyNotification);
    }
        public void SendBroadcast <T>(Node baseNode, T request)
        {
            var nodesInRange = _baseNodeRepository.GetAllInRange(baseNode);

            foreach (var node in nodesInRange)
            {
                var endPoint = new IPEndPoint(IPAddress.Broadcast, node.Id);
                // typeof(T).Name -> pobiera nazwe klasy
                UDPConnection.SendObject(typeof(T).Name, request, endPoint, new SendReceiveOptions <ProtobufSerializer>());
            }
        }
        static void Main(string[] args)
        {
            string messageToSend     = "This is a message To Send";
            string messageFromServer = UDPConnection.GetConnection(new ConnectionInfo("127.0.0.1", 10000), UDPOptions.None).SendReceiveObject <string>("Message", "Message", 2000, messageToSend);

            Console.WriteLine("Server said '{0}'.", messageFromServer);

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey(true);
            NetworkComms.Shutdown();
        }
예제 #24
0
        public void Start()
        {
            listener = new TCPConnectionListener(tcpPort);
            listener.ClientConnected += listener_ClientConnected;
            listener.Listening        = true;

            udpConnection = new UDPConnection();
            udpConnection.PacketRecievedAsync +=
                new BaseConnection.PacketRecievedAsyncEventHandler(udpConnection_PacketRecievedAsync);
            udpConnection.Bind(new IPEndPoint(IPAddress.Any, udpPort));
            udpConnection.Receiving = true;
        }
예제 #25
0
파일: Connections.cs 프로젝트: Omybot/GoBot
        /// <summary>
        /// Ajoute une connexion UDP aux connexions suivies
        /// </summary>
        /// <param name="board">Carte associée à la connexion</param>
        /// <param name="ip">Adresse IP de la connexion</param>
        /// <param name="inPort">Port d'entrée pour le PC</param>
        /// <param name="outPort">Port de sortie pour le PC</param>
        /// <returns>La connexion créée</returns>
        private static UDPConnection AddUDPConnection(Board board, IPAddress ip, int inPort, int outPort)
        {
            UDPConnection output = new UDPConnection();

            output.Connect(ip, inPort, outPort);
            UDPBoardConnection.Add(board, output);
            EnableConnection.Add(board, true);
            AllConnections.Add(output);
            output.ConnectionChecker.SendConnectionTest += ConnexionCheck_SendConnectionTestUDP;

            return(output);
        }
예제 #26
0
        public static bool To(string ip, int timeout = 10000)
        {
            var conn = UDPConnection.GetConnection(new ConnectionInfo(ip, Port), UDPOptions.Handshake, true, false);

            try {
                conn.EstablishConnection();
            } catch (Exception e) {
                return(false);
            }
            conn.CloseConnection(false);
            return(true);
        }
예제 #27
0
        public Window1()
        {
            InitializeGameObserver();
            InitializeUI();
            InitializeComponent();

            // TODO this connections are only hardcoded for testing purpose
            var connection  = new UDPConnection(new IPEndPoint(IPAddress.Parse("192.168.178.22"), 1337));
            var connection2 = new UDPConnection(new IPEndPoint(IPAddress.Parse("192.168.178.24"), 1337));

            connections.Add(connection);
            connections.Add(connection2);
        }
예제 #28
0
        static void Main(string[] args)
        {
            NetworkComms.AppendGlobalIncomingPacketHandler <string>("Message", (packetHeader, connection, incomingString) =>
            {
                Console.WriteLine("This is the message you received " + incomingString);
                connection.SendObject("Message", incomingString + " relayed by server.");
            });

            UDPConnection.StartListening(true);

            Console.WriteLine("Server ready. Press any key to shutdown server.");
            Console.ReadKey(true);
            NetworkComms.Shutdown();
        }
예제 #29
0
 /// <summary>
 /// Stops a plugin based on a method
 /// </summary>
 /// <param name="method">The method containing the information of the plugin to stop</param>
 private void StopPlugin(OSAEMethod method)
 {
     foreach (Plugin p in plugins)
     {
         if (p.PluginName == method.Parameter1)
         {
             OSAEObject obj = OSAEObjectManager.GetObjectByName(p.PluginName);
             if (obj != null)
             {
                 disablePlugin(p);
                 UDPConnection.SendObject("Plugin", p.PluginName + " | " + p.Enabled.ToString() + " | " + p.PluginVersion + " | Stopped | " + p.LatestAvailableVersion + " | " + p.PluginType + " | " + Common.ComputerName, new IPEndPoint(IPAddress.Broadcast, 10051));
             }
         }
     }
 }
예제 #30
0
        private UDPConnection CreateUDPConnection()
        {
            try
            {
                var connectionInfo = new ConnectionInfo(ConnectionType.UDP, ShortGuid.NewGuid(), new IPEndPoint(IPAddress.Any, 0), true);
                var connection     = UDPConnection.GetConnection(connectionInfo, UDPOptions.None);

                return(connection);
            }
            catch (Exception ex)
            {
                Trace.TraceError("[ UDP ] CreateLocalUDPConnection, Error = {0}", ex.Message);
            }

            return(null);
        }
예제 #31
0
 public void udp_OnActive(UDPConnection uc, bool suc)
 {
     if(suc)
     {
         buttonUdpStart.Enabled = false;
         buttonUdpStop.Enabled = true;
         if(FormMain.LOG_MSG)
             logger.AddMsg("UDP�������");
     }
     else
     {
         buttonUdpStart.Enabled = true;
         buttonUdpStop.Enabled = false;
         MessageBox.Show(StrConst.ERR_PORT_UDP);
     }
 }
    // Use this for initialization
    void Start()
    {
        //Start UDP Connection part
        UDPConnection udpConnection = new UDPConnection(port);

        //End UDP Connection part

        skullPrefab = Resources.Load("Skull Prefabs/skullCT"); // Assets/Resources/Skull Prefabs/skullCT.FBX
        skullObject = (GameObject)Instantiate(skullPrefab, new Vector3(0, 0, 0), Quaternion.identity);

        skullCachedTransform = GetComponent <Transform>();
        if (skullObject.transform)
        {
            skullCachedPosition = skullObject.transform.position;
        }
    }
        /// <inheritdoc />
        internal override void StartListening(EndPoint desiredLocalListenEndPoint, bool useRandomPortFailOver)
        {
            if (desiredLocalListenEndPoint.GetType() != typeof(IPEndPoint)) throw new ArgumentException("Invalid desiredLocalListenEndPoint type provided.", "desiredLocalListenEndPoint");
            if (IsListening) throw new InvalidOperationException("Attempted to call StartListening when already listening.");

            IPEndPoint desiredLocalListenIPEndPoint = (IPEndPoint)desiredLocalListenEndPoint;

            try
            {
                UDPConnection = new UDPConnection(new ConnectionInfo(ConnectionType.UDP, new IPEndPoint(IPAddress.Any, 0), desiredLocalListenIPEndPoint, ApplicationLayerProtocol, this), ListenerDefaultSendReceiveOptions, UDPOptions, true);
            }
            catch (SocketException)
            {
                if (useRandomPortFailOver)
                {
                    try
                    {
                        UDPConnection = new UDPConnection(new ConnectionInfo(ConnectionType.UDP, new IPEndPoint(IPAddress.Any, 0), new IPEndPoint(desiredLocalListenIPEndPoint.Address, 0), ApplicationLayerProtocol, this), ListenerDefaultSendReceiveOptions, UDPOptions, true);
                    }
                    catch (SocketException)
                    {
                        //If we get another socket exception this appears to be a bad IP. We will just ignore this IP
                        if (NetworkComms.LoggingEnabled) NetworkComms.Logger.Error("It was not possible to open a random port on " + desiredLocalListenIPEndPoint.Address + ". This endPoint may not support listening or possibly try again using a different port.");
                        throw new CommsSetupShutdownException("It was not possible to open a random port on " + desiredLocalListenIPEndPoint.Address + ". This endPoint may not support listening or possibly try again using a different port.");
                    }
                }
                else
                {
                    if (NetworkComms.LoggingEnabled) NetworkComms.Logger.Error("It was not possible to open port #" + desiredLocalListenIPEndPoint.Port.ToString() + " on " + desiredLocalListenIPEndPoint.Address + ". This endPoint may not support listening or possibly try again using a different port.");
                    throw new CommsSetupShutdownException("It was not possible to open port #" + desiredLocalListenIPEndPoint.Port.ToString() + " on " + desiredLocalListenIPEndPoint.Address + ". This endPoint may not support listening or possibly try again using a different port.");
                }
            }

#if WINDOWS_PHONE || NETFX_CORE
            this.LocalListenEndPoint = new IPEndPoint(IPAddress.Parse(UDPConnection.socket.Information.LocalAddress.DisplayName.ToString()), int.Parse(UDPConnection.socket.Information.LocalPort)); 
#else
            this.LocalListenEndPoint = (IPEndPoint)UDPConnection.udpClient.LocalIPEndPoint;
#endif
            this.IsListening = true;
        }
예제 #34
0
 void udpConnection_OnStop(UDPConnection uc)
 {
     try
     {
         this.BeginInvoke(new udp_OnDeactiveCallback(udp_OnDeactive), new object[] { uc });
     }
     catch { }
 }