1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Tcplistener服务端与tcpclient客户端使用

Tcplistener服务端与tcpclient客户端使用

时间:2021-10-10 06:59:42

相关推荐

Tcplistener服务端与tcpclient客户端使用

Tcplistener服务端与tcpclient客户端使用

#region 测试tcp#region tcplistener服务端public static void Start(){//测试tcplistener服务端Thread thread = new Thread(new ThreadStart(StartTcpListening)){IsBackground = Environment.OSVersion.Platform != PlatformID.Unix};thread.Start();//测试tcpclient客户端//Thread threadClient = new Thread(new ThreadStart(TestTCPClient))//{// IsBackground = Environment.OSVersion.Platform != PlatformID.Unix//};//threadClient.Start();}/// <summary>/// 开启httplistener监听服务/// </summary>public static void StartTcpListening(){TcpListener tcpListener = null;#region TcpListener服务端try{while (true){try{tcpListener = new TcpListener(IPAddress.Any, 5566);//tcpListener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);tcpListener.Start();//tcpListener.Start(100);100是设置最大连接客户端数量}catch (Exception e){Thread.Sleep(1000);//监听服务启动失败,暂停1秒之后再启动监听服务}try{while (true){//try//{//获取连接的客户端TcpClient client = tcpListener.AcceptTcpClient();//Socket socket = tcpListener.AcceptSocket();//client.LingerState.Enabled = false;string data = null;byte[] bytes = new byte[1024];NetworkStream stream = client.GetStream();int i = stream.Read(bytes, 0, bytes.Length);data = Encoding.Default.GetString(bytes, 0, i);byte[] msg = Encoding.Default.GetBytes(data + "ok");stream.Write(msg, 0, msg.Length);stream.Flush();#region 多个实时读取写入信息//ThreadPool.GetMaxThreads(out int nWorkThreads, out int nPortThreads);//ThreadPool.GetAvailableThreads(out int nWorkAvailable, out int nPortAvailable);//System.Diagnostics.Trace.WriteLine($"辅助线程最多: {nWorkThreads},可用:{nWorkAvailable}---i/o线程最多: {nPortThreads},可用:{nPortAvailable}");Thread thread = new Thread(ProcessTcpData){IsBackground = true};thread.Start(client);#endregion#region 只能单个实时读取写入信息//NetworkStream stream = client.GetStream();//int i;//while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)//{// data = Encoding.Default.GetString(bytes, 0, i);// System.Diagnostics.Trace.WriteLine("tcpListener Received: {0}", data);// //byte[] msg = Encoding.Default.GetBytes(data + "ok");// //stream.Write(msg, 0, msg.Length);// //System.Diagnostics.Trace.WriteLine("Sent: {0}", data);// byte[] msg = Encoding.Default.GetBytes(data + "-------ok");// stream.Write(msg, 0, msg.Length);// System.Diagnostics.Trace.WriteLine("tcpListener Sent: {0}", data);//} #endregion//client.Close();不需要关闭//}//catch (Exception e)//{//}}}catch (Exception e){}}}catch (Exception e){}#endregion#region 监听本机的所有ip//Socket socketServer = null;//try//{// socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// socketServer.Bind(new IPEndPoint(IPAddress.Any, 7788));// socketServer.Listen(10);// //socketServer.LingerState.Enabled = false;// while (true)// {// //收// var socket0 = socketServer.Accept();// byte[] vs = new byte[1024];// int count = socket0.Receive(vs);// //发// byte[] vs1 = new byte[1024];// socket0.Send(vs1);// }//}//catch (Exception)//{// throw;//}//finally//{// socketServer.Close();// //socketServer.Shutdown(SocketShutdown.Both);//}#endregion}public static void ProcessTcpData(object clientData){try{TcpClient client = clientData as TcpClient;NetworkStream stream = client.GetStream();string data = null;byte[] bytes = new byte[1024];int i;while ((i = stream.Read(bytes, 0, bytes.Length)) != 0){data = Encoding.Default.GetString(bytes, 0, i);System.Diagnostics.Trace.WriteLine("tcpListener Received: {0}", data);//byte[] msg = Encoding.Default.GetBytes(data + "ok");//stream.Write(msg, 0, msg.Length);//System.Diagnostics.Trace.WriteLine("Sent: {0}", data);byte[] msg = Encoding.Default.GetBytes(data + "-------ok");stream.Write(msg, 0, msg.Length);System.Diagnostics.Trace.WriteLine("tcpListener Sent: {0}", data);ThreadPool.GetMaxThreads(out int nWorkThreads, out int nPortThreads);ThreadPool.GetAvailableThreads(out int nWorkAvailable, out int nPortAvailable);System.Diagnostics.Trace.WriteLine($"辅助线程最多: {nWorkThreads},可用:{nWorkAvailable}---i/o线程最多: {nPortThreads},可用:{nPortAvailable}");}}catch (Exception e){}}#endregion#region tcpclient客户端public static void TestTCPClient(){TcpClient tcpClient = null;try{//tcpClient = new TcpClient(new IPEndPoint(.Dns.Resolve(IPAddress.Any.ToString()).AddressList[0].Address, 7788));tcpClient = new TcpClient();tcpClient.Connect("127.0.0.1", 5566);if (tcpClient.Connected){String data = null;int w = 0;string senddata = null;var stream = tcpClient.GetStream();while (true){//写入senddata = $"哈哈哈kkkk2233--{++w}";#if DEBUGConsole.WriteLine($"TcpClient Send: {senddata}");#elseSystem.Diagnostics.Trace.WriteLine($"TcpClient Send: {senddata}");#endifbyte[] sendBytes = Encoding.ASCII.GetBytes(senddata);stream.Write(sendBytes, 0, sendBytes.Length);//读出byte[] receBytes = new byte[1024];var rece = stream.Read(receBytes, 0, receBytes.Length);data = Encoding.ASCII.GetString(receBytes, 0, rece);#if DEBUGConsole.WriteLine($"TcpClient Received: {data}");#elseSystem.Diagnostics.Trace.WriteLine($"TcpClient Received: {data}");#endifThreadPool.GetMaxThreads(out int nWorkThreads, out int nPortThreads);ThreadPool.GetAvailableThreads(out int nWorkAvailable, out int nPortAvailable);Console.WriteLine($"辅助线程最多: {nWorkThreads},可用:{nWorkAvailable}---i/o线程最多: {nPortThreads},可用:{nPortAvailable}");Thread.Sleep(2000);}}}catch (Exception e){System.Diagnostics.Trace.WriteLine(" TcpClient Exception: {0}", e.InnerException.Message);//throw;}finally{tcpClient.Close();}} #endregion#region 查看static void Main1(string[] args){AutoResetEvent mainEvent = new AutoResetEvent(false);//首次打印线程池状态信息PrintThreadPoolsInfo();//创建一个工作进程ThreadPool.QueueUserWorkItem(new WaitCallback(fnWordThread), mainEvent);//再次打印线程池状态信息PrintThreadPoolsInfo();//等待线程操作结束mainEvent.WaitOne(5000, false);Console.Read();}//打印线程池状态的函数private static void PrintThreadPoolsInfo(){Console.WriteLine("检查线程池状态:{0}", DateTime.Now.ToString("HH:mm:ss:fff"));int nWorkThreads;//线程池中辅助线程的最大数目int nPortThreads;//线程池中异步I/O线程的最大数目ThreadPool.GetMaxThreads(out nWorkThreads, out nPortThreads);int nWorkAvailable;int nPortAvailable;ThreadPool.GetAvailableThreads(out nWorkAvailable, out nPortAvailable);Console.WriteLine("辅助线程最多: {0},可用:{1}", nWorkThreads, nWorkAvailable);Console.WriteLine("异步I/O线程 最多:{0}, 可用:{1}", nPortThreads, nPortAvailable);}private static void fnWordThread(object objState){FileStream fs = new FileStream(@"C:/test.txt", FileMode.Create);StreamWriter sw = new StreamWriter(fs);for (int i = 0; i < 1000; i++){string sMsg = string.Format("{0} {1} ", i + 1, DateTime.Now.ToString("HH:mm:ss:fff"));sw.WriteLine(sMsg);}sw.Close();sw.Dispose();fs.Close();fs.Dispose();AutoResetEvent objEvent = (AutoResetEvent)objState;objEvent.Set();}#endregion#endregion

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。