Exemplo n.º 1
0
 /// <summary>
 ///  Метод асинхронного получения сообщений
 /// </summary>
 /// <param name="result"></param>
 private void ReceiveCallback(IAsyncResult result)
 {
     if (ServerSocket != null && IsListeningStatus)
     {
         try
         {
             EndPoint point_remote = (EndPoint)result.AsyncState;
             int      read_size    = ServerSocket.EndReceiveFrom(result, ref point_remote);
             if (read_size > 0)
             {
                 byte[] receive_data = BufferCollector.Resize(Buffer, read_size);
                 CallReceive(point_remote, receive_data);
             }
         }
         catch (Exception ex)
         {
             CallErrorServer(ServerErrorType.ReceiveDataError, ex.Message);
         }
         finally
         {
             Buffer = new byte[SizeBuffer];
             EndPoint localEndPoint = new IPEndPoint(IPAddress.Any, Port);
             ServerSocket.BeginReceiveFrom(Buffer, 0, Buffer.Length, SocketFlags.None, ref localEndPoint,
                                           new AsyncCallback(ReceiveCallback), localEndPoint);
         }
     }
     else
     {
         Stop();
     }
 }