最近开始学习C#的Socket 记录一下。
最简单的服务端
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 class Program 2 { 3 /* 4 1、实例化Socket对象 5 2、绑定端口和Ip(Bind) 6 3、接听客户端连接(Listen) 7 4、调用Accept取得客户端Socket 8 5、Send 和 Receive 收发数据 9 6、Close关闭Socket 10 */11 static void Main(string[] args)12 {13 Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);14 IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);15 server.Bind(endPoint);16 server.Listen(10);17 server.BeginAccept(new AsyncCallback(AccepCallback), server);18 Console.ReadKey();19 20 }21 22 private static void AccepCallback(IAsyncResult ar)23 {24 Socket server = (Socket)ar.AsyncState;25 Socket client = server.EndAccept(ar);26 Console.WriteLine("收到{0}连接", client.RemoteEndPoint.ToString());27 byte[] data = Encoding.UTF8.GetBytes("客户端连接成功");28 int len = data.Length;29 client.Send(BitConverter.GetBytes(len));30 client.Send(data);31 server.BeginAccept(new AsyncCallback(AccepCallback), server);32 33 }34 }
最简单的客户端
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 6 try 7 { 8 client.Connect("127.0.0.1", 8888); 9 Console.WriteLine("连接成功");10 byte[] buffer = new byte[4];11 client.Receive(buffer);12 int len = BitConverter.ToInt32(buffer, 0);13 buffer = new byte[len];14 client.Receive(buffer);15 string msg = Encoding.UTF8.GetString(buffer);16 Console.WriteLine(msg);17 }18 catch (Exception e)19 {20 21 Console.WriteLine(e.Message);22 }23 Console.ReadKey();24 }25 }