清华大佬耗费三个月吐血整理的几百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);
}
}
}
服务器与客户端两份代码写好并测试 首先你需要启动服务器
然后再运行客户端