清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
该“Socket / 套接字”示例为同步的,如果你需要学习Socket,那么学
习同步方式是很有必要的,异步是从同步过渡过去的。首先你需要
创建两个控制台项目 一个为Server / 服务器 另一个为Client / 客户端
服务器:
namespace Server { using System; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Text; class Program { static void Main(string[] args) { // 物质女的服务器 Console.Title = "Server of pid:" + Process.GetCurrentProcess().Id; int port = 91; // 服务器端口号 int backlog = 0; // 临时挂起的客户端连接的最大数量 IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服务器IPv4地址 Socket sock = new Socket( // 构建一个套接字服务 AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); sock.Bind(new IPEndPoint(ip, port)); // 绑定服务器地址 sock.Listen(backlog); // 开始侦听 byte[] buffer = new byte[512]; // 字节缓冲区 while (true) // 循环接收请求 { Socket client = sock.Accept(); // 为客户端建立服务连接 int offset = client.Receive(buffer, buffer.Length, SocketFlags.None); // 接收客户端传入的数据 Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset)); // 输出客户端传入的数据 // 服务器回应客户端 client.Send(Encoding.Default.GetBytes("服务器:马上和你要分手"), SocketFlags.None); // 再见 client.Close(); } } } }
客户端:
namespace Client { using System; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Text; class Program { static void Main(string[] args) { Console.Title = "Client of pid:" + Process.GetCurrentProcess().Id; int port = 91; // 服务器端口号 IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服务器地址 Socket sock = new Socket( // 构建一个套接字服务 AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); try { sock.Connect(new IPEndPoint(ip, port)); // 连接服务器 sock.Send(Encoding.Default.GetBytes("客户端:我们一起闯码头")); // 发送数据到服务器 byte[] buffer = new byte[512]; // 接收缓冲区 int offset = sock.Receive(buffer, buffer.Length, SocketFlags.None); // 接收服务器传入的数据 Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset)); // 输出服务器传入的数据 sock.Close(); // 再见 } catch(SocketException e) { Console.WriteLine(e.Message); // 输出发生错误的信息 } Console.ReadKey(false); } } }
服务器与客户端两份代码写好并测试 首先你需要启动服务器
然后再运行客户端