private void CloseNetWork() { if (client != null && client.Connected) { client.Close(); client.Dispose(); } }
async Task ILifeFlow.Destroy() { await Destroy(); //client?.DisConnect(); //client.Socket.Disconnect(false); //client.Socket.Dispose(); client?.Dispose(); RecordLog(LogLevel.Information, $"{Name}已关闭"); }
public void closeTCP() { if (asyncTcpClient != null) { asyncTcpClient.AsynSend(NetworkCommand.EXIT); asyncTcpClient.OnReceived -= AsyncClientReceived; asyncTcpClient.Dispose(); clientConnectThread.Abort(); isStartTcp = false; } }
/// <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(); } }
//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; } }
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(); } }
/// <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(); } }
/// <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; }