Esempio n. 1
0
 private void CloseNetWork()
 {
     if (client != null && client.Connected)
     {
         client.Close();
         client.Dispose();
     }
 }
Esempio n. 2
0
        async Task ILifeFlow.Destroy()
        {
            await Destroy();

            //client?.DisConnect();
            //client.Socket.Disconnect(false);
            //client.Socket.Dispose();
            client?.Dispose();
            RecordLog(LogLevel.Information, $"{Name}已关闭");
        }
Esempio n. 3
0
 public void closeTCP()
 {
     if (asyncTcpClient != null)
     {
         asyncTcpClient.AsynSend(NetworkCommand.EXIT);
         asyncTcpClient.OnReceived -= AsyncClientReceived;
         asyncTcpClient.Dispose();
         clientConnectThread.Abort();
         isStartTcp = false;
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 停止
        /// </summary>
        public async void Stop()
        {
            if (Client != null)
            {
                await Task.Delay(2 * 1000);

                Client.Disconnect();
                Task.WaitAll(TaskManager.ToArray());
                Client.Dispose();
                Client = null;
                GC.Collect();
            }
        }
Esempio n. 5
0
        //Reconnect on d/c

        //Get List of Open Games

        //Create Game with server

        //Join Existing Game

        #region Dispose
        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects)
                    _tcpClient.Dispose();
                }

                // TODO: free unmanaged resources (unmanaged objects) and override finalizer
                // TODO: set large fields to null
                disposedValue = true;
            }
        }
Esempio n. 6
0
 private void disconnectBtn_Click(object sender, EventArgs e)
 {
     if (isConnect)
     {
         client.Close();   /*关闭连接*/
         client.Dispose(); /*释放资源*/
         isConnect = false;
         receiveTb.AppendText(Line++ + "  已与服务器断开:" + "\n");
         connectBtn.Text = "重连";
     }
     else
     {
         MessageBox.Show("未创建连接,请先创建连接");
         ipTb.Focus();
     }
 }
Esempio n. 7
0
        /// <summary>退出当前加入的会议</summary>
        public void DisConnect()
        {
            if (client == null)
            {
                return;
            }
            try
            {
                Console.WriteLine("-> client.disconnect ->");
                client.Close();
                client.Dispose();
            }
            finally
            {
                client = null;

                Console.WriteLine("{0} -> client.server.disconnect = AudioIsRunning"
                                  , DateTime.Now.ToString("hh:mm:ss"));
                Audio.Instance.Stop();
                Console.WriteLine("{0} -> client.server.disconnect = VideoIsRunning"
                                  , DateTime.Now.ToString("hh:mm:ss"));
                Video.Instance.Stop();
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Demonstrates the client and server by using the classes directly with callback methods.
        /// </summary>
        /// <returns></returns>
        private async Task RunAsync2()
        {
            int port = 7777;

            var server = new AsyncTcpListener
            {
                IPAddress = IPAddress.IPv6Any,
                Port      = port,
                ClientConnectedCallback = tcpClient =>
                                          new AsyncTcpClient
                {
                    ServerTcpClient   = tcpClient,
                    ConnectedCallback = async(serverClient, isReconnected) =>
                    {
                        await Task.Delay(500);

                        byte[] bytes = Encoding.UTF8.GetBytes("Hello, my name is Server. Talk to me.");
                        await serverClient.Send(new ArraySegment <byte>(bytes, 0, bytes.Length));
                    },
                    ReceivedCallback = async(serverClient, count) =>
                    {
                        byte[] bytes   = serverClient.ByteBuffer.Dequeue(count);
                        string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                        Console.WriteLine("Server client: received: " + message);

                        bytes = Encoding.UTF8.GetBytes("You said: " + message);
                        await serverClient.Send(new ArraySegment <byte>(bytes, 0, bytes.Length));
                    }
                }.RunAsync()
            };

            server.Message += (s, a) => Console.WriteLine("Server: " + a.Message);
            var serverTask = server.RunAsync();

            var client = new AsyncTcpClient
            {
                IPAddress = IPAddress.IPv6Loopback,
                Port      = port,
                //AutoReconnect = true,
                ConnectedCallback = async(c, isReconnected) =>
                {
                    await c.WaitAsync();                       // Wait for server banner

                    await Task.Delay(50);                      // Let the banner land in the console window

                    Console.WriteLine("Client: type a message at the prompt, or empty to quit (server shutdown in 10s)");
                    while (true)
                    {
                        Console.Write("> ");
                        var consoleReadCts  = new CancellationTokenSource();
                        var consoleReadTask = ConsoleEx.ReadLineAsync(consoleReadCts.Token);

                        // Wait for user input or closed connection
                        var completedTask = await Task.WhenAny(consoleReadTask, c.ClosedTask);

                        if (completedTask == c.ClosedTask)
                        {
                            // Closed connection
                            consoleReadCts.Cancel();
                            break;
                        }

                        // User input
                        string enteredMessage = await consoleReadTask;
                        if (enteredMessage == "")
                        {
                            c.Dispose();
                            break;
                        }
                        byte[] bytes = Encoding.UTF8.GetBytes(enteredMessage);
                        await c.Send(new ArraySegment <byte>(bytes, 0, bytes.Length));

                        // Wait for server response or closed connection
                        await c.ByteBuffer.WaitAsync();

                        if (c.IsClosing)
                        {
                            break;
                        }
                    }
                },
                ReceivedCallback = (c, count) =>
                {
                    byte[] bytes   = c.ByteBuffer.Dequeue(count);
                    string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                    Console.WriteLine("Client: received: " + message);
                    return(Task.CompletedTask);
                }
            };

            client.Message += (s, a) => Console.WriteLine("Client: " + a.Message);
            var clientTask = client.RunAsync();

            await Task.Delay(10000);

            Console.WriteLine("Program: stopping server");
            server.Stop(true);
            await serverTask;

            client.Dispose();
            await clientTask;
        }