socket应该在每次连接和断开时进行监听处理 这个在后面分发数据包时会用到 而且可以提示客户端是否在线
此博客内容实质上就是类似于qq上下线提醒的功能的实现
代码的注释比较详细 直接看代码
服务器端
class Program
{
static List<Socket> list = new List<Socket>();
static void Main(string[] args)
{
Console.WriteLine("服务器已开启 ... ");
//创建心跳包 监听客户端状态 如果客户端断开连接 服务器端同样断开连接 并将连接从列表中移除
Timer timer = new Timer(1000);
timer.Elapsed += new ElapsedEventHandler(DisConnectedListen);
timer.Start();
IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
TcpListener listener = new TcpListener(ip, 8500);
// 开始侦听 打开监听就是创建一个门 客户端连接请求就是敲门 只有创建门才会有门可敲
listener.Start();
Console.WriteLine("监听已开启 ...");
while (true)
{
Socket socket = listener.AcceptSocket();
// 打印连接到的客户端信息