public void StartListen()
 {
     try
     {
         //1.0 实例化套接字(IP4寻找协议,流式协议,TCP协议)
         _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         //2.0 创建IP对象
         IPAddress address = IPAddress.Parse(_ip);
         //3.0 创建网络端口,包括ip和端口
         IPEndPoint endPoint = new IPEndPoint(address, _port);
         //4.0 绑定套接字
         _socket.Bind(endPoint);
         //5.0 设置最大连接数
         _socket.Listen(int.MaxValue);
         ConnectionInitializer.Log(string.Format("监听{0}消息成功", _socket.LocalEndPoint.ToString()));
         //6.0 开始监听
         Thread thread = new Thread(ListenClientConnect);
         thread.Start();
         listening = true;
     }
     catch (Exception ex)
     {
         ConnectionInitializer.Log(ex.Message);
     }
 }
Example #2
0
        static void Main(string[] args)
        {
            // Initialize connection
            var connection = ConnectionInitializer.InitializeApiConnection();

            // Let the user play around
            MainMenu.InitializeMainMenu(connection).GetAwaiter().GetResult();
        }
 private void Awake()
 {
     instance = this;
     toggles  = new bool[24];
     for (int i = 0; i < toggles.Length; i++)
     {
         toggles[i] = false;
     }
 }
Example #4
0
        public async Task ShouldThrow_WhenFirstMessageIsNotJoin(
            IConnection connection,
            ConnectionInitializer sut)
        {
            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(Create <TestMessage>());

            await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await sut.ConnectAsync(connection, Cts.Token));
        }
        public void IgnoresNoInitialization()
        {
            var initializer = new ConnectionInitializer(new RedisClientOptions());

            var writtingStream = new MemoryStream();
            var reader         = new DummySocketReader(null);
            var writer         = new DummySocketWriter(writtingStream);

            initializer.Initialize(reader, writer);
        }
        public void DetectMissingResponseErrors()
        {
            var options = new RedisClientOptions();

            options.InitializationCommands.Add(new PreInitializationCommand("auth vtortola"));
            var initializer = new ConnectionInitializer(options);

            var writtingStream = new MemoryStream();
            var reader         = new DummySocketReader(null);
            var writer         = new DummySocketWriter(writtingStream);

            initializer.Initialize(reader, writer);
        }
        public void InitializesWithCommands()
        {
            var options = new RedisClientOptions();

            options.InitializationCommands.Add(new PreInitializationCommand("auth vtortola"));
            var initializer = new ConnectionInitializer(options);

            var writtingStream = new MemoryStream();
            var reader         = new DummySocketReader("+OK\r\n");
            var writer         = new DummySocketWriter(writtingStream);

            initializer.Initialize(reader, writer);

            writtingStream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual("*2\r\n$4\r\nAUTH\r\n$8\r\nvtortola\r\n", new StreamReader(writtingStream).ReadToEnd());
        }
        public void Update()
        {
            if (listening)
            {
                lock (locker)
                {
                    foreach (var clientSocket in clients)
                    {
                        if (clientSocket != null)
                        {
                            try
                            {
                                //获取从客户端发来的数据
                                if (clientSocket.Available > 0)
                                {
                                    int length = clientSocket.Receive(buffer);
                                    //var msg = Encoding.ASCII.GetString(buffer, 0, length);//no other char
                                    var bytes = new byte[length];
                                    Array.ConstrainedCopy(buffer, 0, bytes, 0, length);
                                    //ConnectionInitializer.Log(msg);
                                    Console.WriteLine("接收客户端{0},长度{2},消息{1}", clientSocket.RemoteEndPoint.ToString(), bytes.ToString(), bytes.Length);
                                    ConnectionInitializer.HandleSocketData(bytes);


                                    //如果收到了就发送回信,客户端控制频率
                                    if (dataToSend != null && dataToSend.Length > 0)
                                    {
                                        clientSocket.Send(dataToSend);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                                try
                                {
                                    clientSocket.Shutdown(SocketShutdown.Both);
                                    clientSocket.Close();
                                }catch (Exception e) { }
                                //break;
                            }
                        }
                    }
                }
            }
        }
Example #9
0
        public async Task ShouldThrow_WhenPlayerDoesNotExist(
            IConnection connection,
            PlayerId playerId,
            [Frozen] Mock <IPlayerRepository> playerRepository,
            ConnectionInitializer sut)
        {
            var joinMessage = Fixture.Build <Join>()
                              .With(x => x.PlayerId, playerId)
                              .Create();

            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(joinMessage);

            playerRepository.Setup(x => x.Find(playerId))
            .Returns <Player>(null);

            await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await sut.ConnectAsync(connection, Cts.Token));
        }