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); } }
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; } }
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; } } } } } }
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)); }