Exemple #1
0
    static void Main(string[] args)
    {
        UdpSocket s = new UdpSocket();

        s.Server("127.0.0.1", 27000);

        UdpSocket c = new UdpSocket();

        c.Client("127.0.0.1", 27000);
        c.Send("TEST!");

        Console.ReadKey();
    }
Exemple #2
0
    private void Receive()
    {
        _socket.BeginReceiveFrom(state.buffer, 0, BufSize, SocketFlags.None, ref _epFrom, _recv = ar =>
        {
            var so    = (State)ar.AsyncState;
            int bytes = _socket.EndReceiveFrom(ar, ref _epFrom);
            _socket.BeginReceiveFrom(so.buffer, 0, BufSize, SocketFlags.None, ref _epFrom, _recv, so);

            var msg  = Encoding.ASCII.GetString(so.buffer, 0, bytes);
            var from = _epFrom.ToString();

            /*
             * Console.WriteLine("RECV: {0}: {1}, {2}", from, bytes,
             *  msg);
             * Console.WriteLine();
             */
            ReadMessage(msg, out var id, out var content);



            switch (id)
            {
            case 100:
                var rx = new Regex(@"[0-9]*",
                                   RegexOptions.Compiled | RegexOptions.IgnoreCase);

                var port = content.Substring(1, content.Length - 1);

                if (int.TryParse(rx.Match(port).ToString(), out var x))
                {
                    if (_client != null)
                    {
                        _client.Stop();
                    }

                    _clientPort = x;
                    _clientIp   = ReadIp(from);

                    //Console.WriteLine(_clientIp+ ":" + _clientPort);

                    _client = new UdpSocket();
                    _client.Client(_clientIp, _clientPort);
                    _client.Send("Connected");
                    //Console.WriteLine(_clientIp+ ":" + _clientPort);
                }
                else
                {
                    _clientPort = 0;
                }
                break;

            case 1000:
                /*    received new target position    */
                if (ReadIp(from) == _clientIp && _clientPort != 0)
                {
                    ReadTargetPositions(content);
                    _client.Send(Manager.status);
                }
                break;

            case 1001:
                /*    Reset    */
                if (ReadIp(from) == _clientIp && _clientPort != 0)
                {
                    _client.Send(Manager.status);
                }
                break;

            case 1002:
                /*    Respawn   */

                if (ReadIp(from) == _clientIp && _clientPort != 0)
                {
                    Controller.Respawn();
                    _client.Send(Manager.status);
                }
                break;

            case 1003:
                /*    Get score    */

                if (ReadIp(from) == _clientIp && _clientPort != 0)
                {
                    _client.Send(Controller.GetScore().ToString());
                }
                break;

            default:
                Debug.Log("Unknown id");
                break;
            }
            //Console.WriteLine();
        }, state);