C#线程池多线程Socket通讯 服务器端和客户端示例
2016-12-29 00:00
537 查看
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace socket2016 { class Program { static void Main(string[] args) { //服务器端 Socket sktltn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sktltn.Bind(new IPEndPoint(IPAddress.Any, 12345)); sktltn.Listen(30); while (true) { Socket sk = sktltn.Accept(); //ThreadPool.SetMaxThreads(10, 10); ThreadPool.QueueUserWorkItem(p => { Socket skc = (Socket)sk; byte[] array = new byte[10240]; int offset = 0; while (true) { int len = skc.Receive(array, offset, array.Length - offset, SocketFlags.None); if (len == 0) { break; } offset += len; } string content = Encoding.UTF8.GetString(array, 0, offset); Console.WriteLine("> " + content); }, sk); } } } }
using System; using System.Net; using System.Net.Sockets; using System.Text; namespace socket2016Client { class Program { static void Main(string[] args) { //客户端 Console.WriteLine("输入文字,回车发送"); while (true) { string str = Console.ReadLine(); if (str.Length > 0) { Socket sktc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sktc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345)); byte[] bytes = Encoding.UTF8.GetBytes(str); int offset = 0; while ((offset += sktc.Send(bytes, offset, bytes.Length - offset, SocketFlags.None)) < bytes.Length) ; sktc.Close(); } } } } }
相关文章推荐
- C#线程池多线程Socket通讯 服务器端和客户端示例
- C#线程池多线程Socket通讯 服务器端和客户端示例
- C#线程池多线程Socket通讯 服务器端和客户端示例
- 利用线程池实现多客户端和单服务器端Socket通讯(二):异步编程模型实现
- socket 服务器端与客户端简单通讯
- Java中使用Socket实现服务器端和客户端通讯
- Socket 服务器端与客户端例子(多线程模式)
- 简单的socket通讯方法客户端和服务器端
- Socket 服务端使用多线程实现多客户端通讯实例
- 基于socket、多线程的客户端服务器端聊天程序
- 用socket通讯写出客户端和服务器端的通讯
- java网络编程之socket网络编程示例(服务器端/客户端)
- Socket 服务端使用多线程实现多客户端通讯实例
- FastSocket客户端/服务端通讯示例
- socket客户端发送消息到服务器端简单示例
- Java中使用Socket实现服务器端和客户端通讯
- PHP基于socket实现的简单客户端和服务端通讯功能示例
- 直播项目,在线聊天功能--socket实现客户端和服务器端通讯的简单案例
- 【Android】Socket通讯示例(服务端/客户端)