/// <summary> /// On server data received event. /// </summary> /// <param name="client">Tcp client.</param> /// <param name="data">Received data.</param> /// <param name="offset">Received data's offset.</param> /// <param name="count">Received data's count.</param> /// <returns> /// Server data received opertion task. /// </returns> public async Task OnServerDataReceived(Utilities.Net.Sockets.AsyncTcpClient client, byte[] data, int offset, int count) { Console.Write($"Server : {client.RemoteEndPoint} --> "); if (count < 1024 * 1024 * 1) { Console.WriteLine(Encoding.UTF8.GetString(data, offset, count)); } else { Console.WriteLine("{0} Bytes", count); } await Task.CompletedTask; }
static void Main(string[] args) { try { var config = new AsyncTcpClientConfiguration(); //config.UseSsl = true; //config.SslTargetHost = "Cowboy"; //config.SslClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(@"D:\\Cowboy.cer")); //config.SslPolicyErrorsBypassed = false; //config.FrameBuilder = new FixedLengthFrameBuilder(20000); config.FrameBuilder = new RawBufferFrameBuilder(); //config.FrameBuilder = new LineBasedFrameBuilder(); //config.FrameBuilder = new LengthPrefixedFrameBuilder(); //config.FrameBuilder = new LengthFieldBasedFrameBuilder(); IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 22222); _client = new Utilities.Net.Sockets.AsyncTcpClient(remoteEP, new TcpClientEventDispatcher(), config); _client.Connect().Wait(); Console.WriteLine("TCP client has connected to server [{0}].", remoteEP); Console.WriteLine("Type something to send to server..."); while (true) { try { string text = Console.ReadLine(); if (text == "quit") { break; } Task.Run(async() => { if (text == "many") { text = new string('x', 8192); for (int i = 0; i < 1000000; i++) { await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1}].", _client.LocalEndPoint, text); } } else if (text == "big1k") { text = new string('x', 1024 * 1); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big10k") { text = new string('x', 1024 * 10); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big100k") { text = new string('x', 1024 * 100); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big1m") { text = new string('x', 1024 * 1024 * 1); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big10m") { text = new string('x', 1024 * 1024 * 10); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big100m") { text = new string('x', 1024 * 1024 * 100); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else if (text == "big1g") { text = new string('x', 1024 * 1024 * 1024); await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } else { await _client.SendAsync(Encoding.UTF8.GetBytes(text)); Console.WriteLine("Client [{0}] send text -> [{1} Bytes].", _client.LocalEndPoint, text.Length); } }); } catch (Exception ex) { Console.WriteLine(ex.Message, ex); } } _client.Shutdown(); Console.WriteLine("TCP client has disconnected from server [{0}].", remoteEP); } catch (Exception ex) { Console.WriteLine(ex.Message, ex); } Console.ReadKey(); }
/// <summary> /// On server disconnected event. /// </summary> /// <param name="client">Tcp client.</param> /// <returns> /// Server disconnected opertion task. /// </returns> public async Task OnServerDisconnected(Utilities.Net.Sockets.AsyncTcpClient client) { Console.WriteLine($"TCP server {client.RemoteEndPoint} has disconnected."); await Task.CompletedTask; }