示例#1
0
        /// <summary>
        /// 开启服务器
        /// </summary>
        public void StartServer(string ip, int port, int maxClient)
        {
            try {
                clientPeerPool = new ClientPeerPool(maxClient); // 客户端连接池实例
                // 初始化 Semaphore 类的新实例,并指定初始入口数和最大并发入口数
                semaphore = new Semaphore(maxClient, maxClient);
                // 创建 Socket 对象
                serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                // 填满客户端对象连接池,需要的时候再去取
                for (int i = 0; i < maxClient; i++)
                {
                    ClientPeer temp = new ClientPeer();
                    temp.receiveCompleted       = ReceiveProcessCompleted; // 消息处理完成后的委托,注册函数
                    temp.ReceiveArgs.Completed += ReceiveArgs_Completed;   // 注册事件
                    clientPeerPool.Enqueue(temp);
                }

                // 绑定
                serverSocket.Bind(new IPEndPoint(IPAddress.Parse(ip), port));
                // 监听该接口上的请求
                serverSocket.Listen(maxClient);
                Console.WriteLine("服务器启动成功");

                // 连接
                StartAccept(null);
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
        }
示例#2
0
 /// <summary>
 /// 开启服务器
 /// </summary>
 public void StartServer(string ip, int port, int maxClient)
 {
     try
     {
         clientPeerPool = new ClientPeerPool(maxClient);
         semaphore      = new Semaphore(maxClient, maxClient);
         serverSocket   = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         //填满客服端对象连接池
         for (int i = 0; i < maxClient; i++)
         {
             ClientPeer temp = new ClientPeer();
             temp.receiveCompleted      += ReceiveProcessCompleted;
             temp.ReceiveArgs.Completed += ReceiveArgs_Copmleted;
             clientPeerPool.Enqueue(temp);
         }
         //绑定到进程
         serverSocket.Bind(new IPEndPoint(IPAddress.Parse(ip), port));
         //最大监听数
         serverSocket.Listen(maxClient);
         Console.WriteLine("服务器启动成功");
         StartAccept(null);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
 }