服务器和客户端连接,服务器会创建一个连接,客户端和服务器断开,服务器会销毁一个连接。为了避免服务器频繁的创建和销毁连接。在这里,我们可以创建一个连接池去管理这些连接。其实连接池是一种空间换时间的操作。
连接池代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace YYSever
{
/// <summary>
/// 连接池
/// </summary>
class ClientPeerPool
{
/// <summary>
/// 连接队列
/// </summary>
private Queue<ClientPeer> clientPeersQueue;
/// <summary>
/// 连接池容量
/// </summary>
public int Capacity { get => clientPeersQueue.Count; }
/// <summary>
/// 连接池
/// </summary>
/// <param name="capicity">连接池初始容量</param>
public ClientPeerPool(int capacity)
{
clientPeersQueue = new Queue<ClientPeer>();
ClientPeer clientPeer= null;
for (int i = 0; i < capacity; i++)
{
clientPeer = new ClientPeer();
Enqueue(clientPeer);
}
}
/// <summary>
/// 一个连接进入队列
/// </summary>
/// <param name="clientPeer"></param>
public void Enqueue(ClientPeer clientPeer)
{
clientPeersQueue.Enqueue(clientPeer);
}
/// <summary>
/// 从队列中取出连接
/// </summary>
/// <returns></returns>
public ClientPeer Dequeue()
{
if (clientPeersQueue.Count==0)
{
ClientPeer clientPeer = new ClientPeer();
Enqueue(clientPeer);
}
return clientPeersQueue.Dequeue();
}
}
}
在此我修改了ClientPeer中的部分代码
在后续的博客中会再次给大家呈现阶段性工程的。这里是给大家展示我的整个开发过程。
在服SeverPeer中我的部分重构