/// <summary> /// 退出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_exit_Click(object sender, EventArgs e) { if (MessageBox.Show("手动停止服务器之后需要人工重启", "停止服务", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { // 关闭所有的线程 if (server.IsRunning) { server.Stop(); } this.Dispose(); this.Close(); } }
private void StopServer() { if (tcpServer != null) { tcpServer.Stop(); } }
/// <summary>停止监听服务</summary> public bool StopListener() { try { Console.Write("停止监听服务"); server.Stop(); Console.WriteLine(" -> 完成"); return(true); } catch (Exception ex) { Console.WriteLine(" -> listener.stop.error."); Console.WriteLine(ex.Message); } return(false); }
/// <summary> /// 停止监控 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StopMonitorClicked(object sender, RoutedEventArgs e) { //终止线程 if (monitorThread != null) { monitorThread.Abort(); monitorThread.Join(); monitorThread = null; } //停止服务器 if (tcpServer != null) { tcpServer.Stop(); } lblStatus.Content = "监控已停止"; lbClient.Items.Clear(); }
public async Task ServerIsAbleToProcessPacketsAndCleansUpResources(ISocketSessionFactory sessionFactory, IProcessor processor, IPlayer player) { player.GetCityCount().Returns(1); player.HasTwoFactorAuthenticated = DateTime.Now; var socketAwaitablePool = new SocketAwaitablePool(10); var buffer = new BlockingBufferManager(1000, 15); Socket serverSideSocket = null; AsyncSocketSession session = null; sessionFactory.CreateAsyncSocketSession(Arg.Any <string>(), Arg.Any <Socket>()) .Returns(args => { serverSideSocket = args.Arg <Socket>(); session = new AsyncSocketSession(string.Empty, serverSideSocket, processor, socketAwaitablePool, buffer) { Player = player }; return(session); }); AsyncTcpServer server = new AsyncTcpServer(sessionFactory, socketAwaitablePool, buffer); try { server.Start("127.0.0.1", 0); // Connect and verify client connected and socket options are set var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { NoDelay = true }; var packetToSend1 = new Packet(Command.MarketSell); packetToSend1.AddString("Hello"); var bytesToSendOnConnect = packetToSend1.GetBytes(); await socket.ConnectAsync(new SocketAwaitable { RemoteEndPoint = server.LocalEndPoint }); await Task.Delay(1000); await socket.SendAsync(new SocketAwaitable { Buffer = new ArraySegment <byte>(bytesToSendOnConnect, 0, bytesToSendOnConnect.Length) }); await Task.Delay(1000); server.GetSessionCount().Should().Be(1); serverSideSocket.Connected.Should().BeTrue(); serverSideSocket.NoDelay.Should().BeTrue(); serverSideSocket.SendTimeout.Should().Be(1000); // Send packets and verify server processes packets var packetToSend2 = new Packet(Command.MarketBuy); packetToSend2.AddString("World"); var bytesToSecondAfterConnect = packetToSend2.GetBytes(); await socket.SendAsync(new SocketAwaitable { Buffer = new ArraySegment <byte>(bytesToSecondAfterConnect, 0, bytesToSecondAfterConnect.Length) }); await Task.Delay(1000); // Stop server and verify it disconnect and releases resources server.Stop(); await Task.Delay(1000); player.HasTwoFactorAuthenticated.Should().Be(null); serverSideSocket.Connected.Should().BeFalse(); socketAwaitablePool.Count.Should().Be(10); buffer.AvailableBuffers.Should().Be(15); processor.Received(1).Execute(session, Arg.Is <Packet>(packet => packet.GetBytes().SequenceEqual(bytesToSecondAfterConnect))); processor.Received(1).Execute(session, Arg.Is <Packet>(packet => packet.GetBytes().SequenceEqual(bytesToSendOnConnect))); processor.Received(1).ExecuteEvent(session, Arg.Is <Packet>(packet => packet.Cmd == Command.OnDisconnect)); } finally { server.Stop(); } }
public void stopListening() { mRunning = false; server.Stop(); }
public void Stop() { _server.Stop(); _server.ClientConnected -= new EventHandler <TcpClientConnectedEventArgs>(OnClientConnected); _server.ClientDisconnected -= new EventHandler <TcpClientDisconnectedEventArgs>(OnClientDisconnected); }
void OnApplicationQuit() { asyncServer.Stop(); }