ria pc game
translate to English   translate to Chinese
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 февраля 2019 16:01
Вход Регистрация Забыли пароль ?

megainformatic - статья Тимонина Андрея - Flash. Экспорт SWC библиотеки.
[к содержанию] Flash. Экспорт SWC библиотеки. автор: Тимонин Андрей дата публикации на сайте Мега Информатик: 18.11.2012   Эта статья будет посвящена основам flash программирования. Здесь
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
Технологии WEB

Технологии WEB - AJAX-запросы

Часто Задаваемые Вопросы

Продукты

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

webinformatic: Музыкальная страничка трэкера

megainformatic - Создание музыки и звука

webinformatic: Создание музыки и звука: урок 2

megainformatic - Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

megainformatic - Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

megainformatic - Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

megainformatic - Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

megainformatic - Создание музыки в Impulse Tracker 2.14 Первая мелодия

megainformatic - Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

megainformatic - Создание музыки и звука: теория и практика создания трэкерской музыки

megainformatic - Инструкция по оплате услуг средствами WebMoney

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

megainformatic - Основы IDirectMusic8 в среде Delphi6-7

megainformatic - Основы DirectInput8 в среде Delphi 7

megainformatic - Основы DirectSound8 в среде Delphi6-7

megainformatic - Плагин для 3DS MAX из DX9 SDK

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 5

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 6

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

megainformatic - Уроки 3ds max - Введение в 3ds max

megainformatic - ГАЛЕРЕЯ 3D-моделей

megainformatic - СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

megainformatic - Создание макета помещения - этап 2

megainformatic - МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

megainformatic - СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

megainformatic - Моделирование обстановки помещения

megainformatic - Создание модели автомобиля

подробнее

     
  Создание своих Тем для WordPress  
     
  Введение  
     
 

Начнём с того, что, как мне кажется, будет вам интересно узнать из области сайтостроения.

Итак, даже если у Вас есть собственная CMS (самописная, как говорят), то всегда полезно знать, как устроены профессиональные CMS. Их великое множество - Joomla, Drupal, ModX, Dle, WordPress и т. д.

Стоит ли осваивать их все или достаточно выбрать какую то одну и прорабатывать её ?

Если Вы новичок в сайтостроении, каким был совсем недавно и я, то лучше для начала остановить свой выбор на чём-то одном, и заняться его изучением.

На данном этапе я хотел бы познакомиться с созданием простого шаблона для CMS WordPress. Собственно этим мы сейчас и займёмся.

 
     
 

Для начала конечно вам необходимо установить denver и wordpress.

Ну а далее - вы займётесь собственно изучением данного урока.

 
     
 

Предположим, что Вы установили wordpress локально на свой компьютер в следующую папку -

C:\WebServers\home\localhost\www\wordpress_ru

 
     
  Если заглянуть в папку установленного wordpress, то там вы найдёте такой путь - wp-content\themes  
     
  Это и есть папка, внутри которой Вы можете размещать собственные шаблоны сайтов для WordPress. В WordPress они именуются Темами.  
     
 

Так что же нужно для того, чтобы создать собственную тему для WordPress ?

А нужно нам следующее:

 
     
  внутри папки themes создаем папку, например, mytheme  
     
 

Открываем эту созданную папку и внутри неё создаем такие файлы -

index.php

header.php

sidebar.php

footer.php

style.css

loop.php

functions.php

 
     
  Кроме того создайте здесь папку images, в которую будете помещать изображения, необходимые для оформления внешнего вида вашей темы.  
     
  Далее, вооружившись каким либо редактором, например, DreamWeaver или даже обычным Блокнотом добавляем в наши файлы следующий код  
     
  В файл index.php  
     
 

<?php
/**
* Главный файл шаблона темы
*
* Это изменяемый файл шаблона для темы WordPress
* и один из 2 обязательных файлов для темы (второй - это style.css).

* Используется для отображения страницы, в том случае, когда
* неопределены другие дополнительные варианты
* т. е., он совмещает вывод главной страницы, когда нет файла home.php.
* Более подробно: http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

get_header(); ?>

<div id="container">
<div id="content" role="main">

<?php
/* Запуск цикла вывода постов блога.
* Если нужно переопределить данную возможность в дочерней теме тогда

* включите в папку новой темы файл loop-index.php для использования особенностей, описанных в нём.
*/

get_template_part( 'loop', 'index' );
?>
</div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

 
     
  В файл style.css мы добавим такой код  
     
  style.css  
     
  Файлы loop.php и functions.php также можете взять в готовом виде -  
     
  loop.php  
     
  functions.php  
     
  В файл header.php  
     
 

<?php
/**
* Заголовок (Header) для нашей темы.
*
* Отображает содержимое секции <head> и всё до блока <div id="main">
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<title><?php
/*
* Выводим тег <title> в зависимости от содержимого страницы.
*/

global $page, $paged;

wp_title( '|', true, 'right' );

// Имя нашего сайта (блога).
bloginfo( 'name' );

// Добавляем описание для домашней/начальной страницы.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
echo " | $site_description";

// Если нужно - добавляем номер страницы:
if ( $paged >= 2 || $page >= 2 )
echo ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) );

?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php
/* Мы добавим немного JavaScript на страницы с комментариями для
* формирования поддержки сайтов с подпроцессными (threaded) комментариями (когда они используются).
*/

if ( is_singular() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );

/* Всегда ставим вызов wp_head() до закрытия тега </head>
* вашей темы, либо вы нарушите подключаемость многих плагинов (plugins), которые обычно используют этот обработчик (hook)
* для добавления элементов в <head> таких как
* стили (styles), скрипты (scripts), и мета теги (meta tags).
*/

wp_head();
?>
</head>

<body <?php body_class(); ?>>
<div id="wrapper" class="hfeed">
<div id="header">
<div id="masthead">
<div id="branding" role="banner">
<?php $heading_tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; ?>
<<?php echo $heading_tag; ?> id="site-title">
<span>
<a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
</span>
</<?php echo $heading_tag; ?>>
<div id="site-description"><?php bloginfo( 'description' ); ?></div>

<?php
// Проверка условия, что это пост или страница, имеет сокращенное представление (thumbnail), либо располагается целиком
if ( is_singular() &&
has_post_thumbnail( $post->ID ) &&
(
/* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
$image[1] >= HEADER_IMAGE_WIDTH ) :
//Изображение в заголовке страницы
echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
else : ?>
<img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
<?php endif; ?>
</div><!-- #branding -->

<div id="access" role="navigation">
<?php
/* Разрешить экранным ридерам (screen readers)/ текстовым браузерам (text browsers) пропустить отображение меню навигации и получить все равно корректный вариант отображения*/ ?>
<div class="skip-link screen-reader-text"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentyten' ); ?>"><?php _e( 'Skip to content', 'twentyten' ); ?></a></div>
<?php
/* Наше навигационное меню. Если оно не заполнено, wp_nav_menu переключается к состоянию wp_page_menu. К меню применяется основная позиция из возможных. Если ничего не присвоено, используется меню с наименьшим ID*/ ?>
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
</div><!-- #access -->
</div><!-- #masthead -->
</div><!-- #header -->

<div id="main">

 
     
  В файл sidebar.php  
     
 

<?php
/**
* Сайдбар (Sidebar) включает области для основных и вторичных виджетов (widget).
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?>

<div id="primary" class="widget-area" role="complementary">
<ul class="xoxo">

<?php
/* Когда мы вызываем функцию dynamic_sidebar(), она будет разделять
* виджеты на области для этих виджетов. Если вместо этого функция возвратит false,
* тогда sidebar просто не существует, поэтому будет отображен
* сайдбар с содержимым по умолчанию.
*/

if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>

<li id="search" class="widget-container widget_search">
<?php get_search_form(); ?>
</li>

<li id="archives" class="widget-container">
<h3 class="widget-title"><?php _e( 'Archives', 'twentyten' ); ?></h3>
<ul>
<?php wp_get_archives( 'type=monthly' ); ?>
</ul>
</li>

<li id="meta" class="widget-container">
<h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
<ul>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<?php wp_meta(); ?>
</ul>
</li>

<?php endif; // end primary widget area ?>
</ul>
</div><!-- #primary .widget-area -->

<?php
// A second sidebar for widgets, just because.
if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>

<div id="secondary" class="widget-area" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
</ul>
</div><!-- #secondary .widget-area -->

<?php endif; ?>

 
     
  В файл footer.php  
     
 

<?php
/**
* Шаблон для отображения подвала (footer).
*
* Содержит закрывающий блок id=main тег и весь контент
* после него. Вызывает sidebar-footer.php для нижележащих виджетов.
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?>
</div><!-- #main -->

<div id="footer" role="contentinfo">
<div id="colophon">

<?php
/* Сайдбар в футере? Вы можете настроить
* ваш футер на 4 столбца виджетов.
*/

get_sidebar( 'footer' );
?>

<div id="site-info">
<a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
<?php bloginfo( 'name' ); ?>
</a>
</div><!-- #site-info -->

<div id="site-generator">
<?php do_action( 'twentyten_credits' ); ?>
<a href="<?php echo esc_url( __('http://wordpress.org/', 'twentyten') ); ?>"
title="<?php esc_attr_e('Semantic Personal Publishing Platform', 'twentyten'); ?>" rel="generator">
<?php printf( __('Proudly powered by %s.', 'twentyten'), 'WordPress' ); ?>
</a>
</div><!-- #site-generator -->

</div><!-- #colophon -->
</div><!-- #footer -->

</div><!-- #wrapper -->

<?php
/* Всегда используем функцию wp_footer() до закрывающего тега </body>
* вашей темы, иначе вы повредите многие плагины, которые
* обычно используют этот обработчик (hook) для обращения к JavaScript файлам.
*/

wp_footer();
?>
</body>
</html>

 
     
  Теперь Вам остается только активировать созданную тему через админку WordPress и увидеть результат !  
     
  В следующем нашем уроке мы разберем как создается меню навигации.  
     
подробнее

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 4

 

к странице 1 к странице 2 к странице 3 страница 4

 

* * *

в коде есть -

BEGIN_MESSAGE_MAP(CAnimateCtrlPage, CPropertyPage)

//...

ON_BN_CLICKED(IDC_PLAY, OnPlay)






class CAnimateCtrlPage : public CPropertyPage
{

	afx_msg void OnPlay();
	
	
	
//...


void CAnimateCtrlPage::OnPlay()


Нужно записывать код вручную или надо генерировать ? И если генерировать, то как ?


На кнопке кликаем правой кнопкой и генерируем Add Event Handler


Получилось -

void Cwinsock_samp1Dlg::OnBnClickedButtonTest()

Как теперь получить IDC_STATIC и установить его текстовое свойство, чтобы
увидеть результат работы ?


Посмотрел пример тут -
\CmnCtrl1\animctrl.cpp

CWnd* pFrame = GetDlgItem(IDC_ANIMFRAME);
	pFrame->GetClientRect(&m_rectAnimateCtrl);
	
	
Значит по-аналогии


есть что-то более близкое -

вкладка CMonthCalCtrl


\CmnCtrl1\MonthCal.cpp
\CmnCtrl1\MonthCal.h

и там посмотреть как происходит работа с меткой Selection

Как выводится текущая дата в метку Selection ?


\CmnCtrl1\MonthCal.cpp


void CMonthCalPage::HandleSelect


	m_pszSelection.Format(_T("%02d/%02d/%2d"),ct.GetMonth(),ct.GetDay(),ct.GetYear());
	

//...

CMonthCalPage::CMonthCalPage

//...

m_pszSelection = _T("");


//...

void CMonthCalPage::DoDataExchange

//...

	DDX_Text(pDX, IDC_STRSELECTION, m_pszSelection);



Значит делаем по-аналогии

\winsock_samp1\winsock_samp1Dlg.cpp


void Cwinsock_samp1Dlg::DoDataExchange	
	
	DDX_Text(pDX, IDC_STATIC2, m_pszSelection);  //в данной строке возникает ошибка, почему ?


Надо было у добавленного элемента Static Text на форме, прописать в его свойствах этот же ID.


Однако по клику на кнопке Test в элементе Static Text ничего не отображается. Почему ?

внутри
void Cwinsock_samp1Dlg::OnBnClickedButtonTest


Добавил вызов
UpdateData(TRUE);


Но и это не решило вопрос. Что еще не учтено ?


Надо в справочном руководстве посмотреть как ведется работа со Static Text.
Может быть там есть примеры его использования.

void Cwinsock_samp1Dlg::OnBnClickedButtonTest()
{
	// TODO: Add your control notification handler code here
	//m_pszSelection.Format(_T("%02d/%02d/%2d"),ct.GetMonth(),ct.GetDay(),ct.GetYear());

	int i = 1;

	m_pszSelection.Format( _T("test %02d"), i );

	UpdateData(FALSE);  //надо было просто делать FALSE - и это решило проблему !
	//если TRUE - ничего не происходит
	
	
	
Работает !


Для проверки сделал, 


void Cwinsock_samp1Dlg::OnBnClickedButtonTest()
{
	// TODO: Add your control notification handler code here
	//m_pszSelection.Format(_T("%02d/%02d/%2d"),ct.GetMonth(),ct.GetDay(),ct.GetYear());

	//int i = 1;

	time_t osBinaryTime;
	time( &osBinaryTime ) ;

	CTime ct( osBinaryTime );
	//ct.
	m_pszSelection.Format( _T("%02d/%02d/%2d %02d:%02d:%02d"),ct.GetMonth(),
		ct.GetDay(),ct.GetYear(), ct.GetHour(),
		ct.GetMinute(), ct.GetSecond() );

	UpdateData(FALSE);
}


Т. е. чтобы по клику в текстовой метке на форме выводилась текущая дата и время.
	


	
Переходим к работе с Windows Sockets 2

	
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/winsock/winsock/initializing_winsock.htm



void Cwinsock_samp1Dlg::OnBnClickedButtonTest()
{
	// TODO: Add your control notification handler code here

	WSADATA wsaData;
	
	int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );

	int iRes2 = 0;

	if ( iResult != NO_ERROR )
	{
		//printf("Error at WSAStartup()\n");

		iRes2 = -1;
	}

	//m_pszSelection.Format(_T("%02d/%02d/%2d"),ct.GetMonth(),ct.GetDay(),ct.GetYear());

	//int i = 1;

	time_t osBinaryTime;
	time( &osBinaryTime ) ;

	CTime ct( osBinaryTime );
	//0x%x
	m_pszSelection.Format( _T("%02d/%02d/%2d %02d:%02d:%02d iResult = 0x%x"),
		ct.GetMonth(), ct.GetDay(),ct.GetYear(), ct.GetHour(),
		ct.GetMinute(), ct.GetSecond(), iRes2 );

	UpdateData(FALSE);
}



Ошибок нет, всё ок.

Идём дальше.


Эта сфера деятельности уже не приносит такой прибыли, которую приносило 5-10 лет назад.
Тогда был настоящий бум.

Аналогичное можно говорить и про другие. Например про те же иноформы.
В создании ино также уже нет такого бума, т. е. рынок определился,
определились крупные его игроки. Заработать быстро и много уже трудно.

Именно поэтому приходится искать новые и стабильные способы заработка. Развивать не в ширину,
а в глубину - чем и является разработка брэйн-асков.

Брэйн-аск - модуль, загружаемый непосредственно в мозг и могущий выполнять какие-либо
полезные функции.

Сейчас таким мозгом являются современные персональные компьютеры и ноутбуки, но
когда-нибудь это будет встроено в мозг человека или никогда не будет. Лично я был бы против
чего-то такого. Каждому надо оставлять право выбора.

Однако свободный выбор всегда начинается с каких-то основ. Иногда человек даже просто не знает,
что у него был такой выбор. Он живёт не отдавая себе в этом отчет. Потому что иного он
просто никогда не видел и не представляет.


Но человеку нужно нечто большее. Всегда что-то особенное. Необычное. Музыка души.
Свободный полёт. Фантазия. Сон. Тонкая грань мечты и действительности.
Каждый видит мир по-своему. В одном мы все похожи - нам нужна мечта.

Без неё мир не изменится. Человек перестанет быть человеком. Где эта тонкая пленка реальности
и сна ?

										* * *

Антон спал безмятежно. Он летел куда-то, в пространстве, синеве небес. Было лето.
Солнце. Нежная прохлада и легкий ветерок.

И он погрузился в сон. Синева. Простор и облака. Во сне мы можем делать многое,
чего не можем наяву. Решать сложные проблемы. Находить ответы на трудные вопросы.
Так и он. Думал и мечтал. И все это протекало легко и безмятежно.

Никуда не надо было бежать. Ни от кого убегать. Просто иной мир. Параллельный
и всеобъемлющий. Может быть он более реален, чем вне сна.

И там царит вечное лето. 

Всё происходит очень быстро. Но там время течет в другом режиме. Здесь 5 минут,
там - возможно целая жизнь. 

Команда идёт. Она спешит к тебе на помощь. Тебе кажется, что изменить ничего
нельзя, но ты только помечтай. И тогда - всё придёт.

И Антон увидел нечто новое. Другой мир - такой, каким он будет. Всё будет сложнее,
и в то же время упростится на новом уровне.

Представьте однооконный, однопрограммный мир и мир многооконный и многопрограммный.
В котором Вы делаете сразу несколько дел одновременно. Причем они органично
взаимодействуют и дополняют друг друга.

Да - о таком еще можно только мечтать. ВОТ ОНО !
Начинаем.

Оказывается мечать тоже надо уметь. А как вы думали ? В любом деле важен опыт
и умение.

... Люди годами выстраивают свой бизнес, а ты хочешь за 5 минут заработать полмиллиона.
Что же такое ты должен сделать ?


ping ping ping

Раздалось вдруг.

Пришло время изучать ping.

Ping — утилита для проверки целостности и качества соединений в сетях на основе TCP/IP,
а также обиходное наименование самого запроса.

Первоначально словом «ping» (по созвучию) именовали направленный акустический
сигнал противолодочных гидролокаторов или «асдиков» (англ. ASDIC, аббревиатура от
Allied Submarine Detection Investigation Committee) времён Второй мировой войны.

Утилита отправляет запросы (ICMP Echo-Request) протокола ICMP указанному узлу сети
и фиксирует поступающие ответы (ICMP Echo-Reply). Время между отправкой запроса
и получением ответа (RTT, от англ. Round Trip Time) позволяет определять двусторонние
задержки (RTT) по маршруту и частоту потери пакетов, то есть косвенно определять
загруженность на каналах передачи данных и промежуточных устройствах.

В Microsoft SDKs\Windows\v7.0

есть пример исходного кода для написания этой утилиты -
c:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\Ping.cpp

Её код Мы и будем сегодня изучать.

Сначала важные вопросы:


где скачать Microsoft SDK Windows v7.0 ?

https://www.microsoft.com/en-us/download/details.aspx?id=3138

Там будет онлайн-инсталлятор который будет скачивать и устанавливать все нужные компоненты
в автоматическом режиме пока не закончит.

Объём скачиваемых данных составляет около 2.5 Gb


Исходный код будем открывать в MSVS 2005 и компиляцию выполнять там же.

Созданное приложение является консольным. Поэтому для его запуска
откройте окно Коммандной строки Windows - Пуск - Программы - Служебные Windows -
Коммандная строка

И сразу же смените путь введя команду

cd и скопировав и вставив путь 
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\Release

Тогда введя ping - и нажав Enter Вы получите распечатку доступных опций утилиты ping:

usage: ping [options] 
        host        Remote machine to ping
        options:
            -a 4|6       Address family (default: AF_UNSPEC)
            -i ttl       Time to live (default: 128)
            -l bytes     Amount of data to send (default: 32)
            -r           Record route (IPv4 only)
			
			
Если не вводить команду cd, а сразу ввести ping - то Вы запустите стандартную
утилиту ping из комплекта стандартных утилит Windows.

Так что будьте внимательны !


Если Вы запустите стандартную утилиту ping - то набор её параметров будет совсем иным -

cd c:\

c:\>ping

Использование: ping [-t] [-a] [-n <число>] [-l <размер>] [-f] [-i ]
         [-v ] [-r <число>] [-s <число>]
         [[-j <список_узлов>] | [-k <список_узлов>]] [-w <время_ожидания>]
         [-R] [-S <адрес_источника>] [-4] [-6] конечный_узел

Параметры:
    -t                    Задает проверку связи с указанным узлом до
                          прекращения.

...

и т. д.

Ну и конечно никаких изменений Вы не обнаружите если будете изменять код и компилировать,
потому что запускать будете совершенно другое приложение.

Так что запускайте его именно через последовательность команд

cd и скопировав и вставив путь 
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\Release

(вводится только один раз, далее вы уже остаетесь в данной папке и вводить команду
cd и путь повторно уже не нужно)

ping host megainformatic.ru

И получите в ответ что-то подобное -

Pinging 81.177.141.113 with 32 bytes of data

Reply from 81.177.141.113: bytes=32 time=62ms TTL=128
Reply from 81.177.141.113: bytes=32 time=47ms TTL=128
Reply from 81.177.141.113: bytes=32 time=47ms TTL=128
Reply from 81.177.141.113: bytes=32 time=47ms TTL=128


Информацию о том, кто первоначально создал программу ping и
все особенности её работы можно найти в различных статьях
на просторах интернета.

Здесь и далее мы остановимся на более практических вопросах:

- Какой именно код используется для работы с Windows Sockets 2;

и

- Как собственно работает ping - т. е. какой код требуется, чтобы
обеспечить её работу.


Естественно полный исходный код Мы здесь приводить не будем -
его Вы можете посмотреть сами скачав Microsoft Windows SDK 7

Здесь и далее мы будем останавливаться только на самых важных
моментах, на которые следует обратить внимание.

Все особенности применения можно почерпнуть из вышеупомянутых мануалов по
Microsoft Windows SDK 7, которые Вы найдёте там же -

например -
C:\Program Files\Microsoft SDKs\Windows\v7.0\Help\1033\WinSock.hxs


Чем его открыть ?

http://www.softpedia.com/get/System/OS-Enhancements/Help-Explorer-Viewer.shtml#download

и кликаем кнопку Softpedia Mirror (US)

Скачиваем и устанавливаем.


Программа оказалась довольно примитивной.
Она не поддерживает даже drag'n'drop.

Чтобы открыть вышеупомянутый 
C:\Program Files\Microsoft SDKs\Windows\v7.0\Help\1033\WinSock.hxs

Вам надо сначала открыть саму прогу -
C:\Program Files (x86)\HelpExplorer Software\Help Explorer 3\bin\helpexplorer.exe

Затем в ней выбрать пункт меню File > Open
и в окне диалога указать нужный файл.

Не совсем удобно. Но стандартно и привычно.

Главное мануал таки открылся.

Help Explorer 3.0 для открытия hxs файлов

Утилита как видим на скрине не первой свежести - датирована аж 2006 годом.

Но главное работает.

Так что двигаемся далее.


Итак,

Смотрим код в исходном файле -
c:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\Ping.cpp


Исполнение начинается с функции main. В этом легко убедиться запустив приложение
из MSVS в режиме отладки, т. е. Debug


int __cdecl main(int argc, char **argv)
{



Какова основная задача приложения ping ?


    // Load Winsock
    if ((rc = WSAStartup(MAKEWORD(2,2), &wsd)) != 0)
	{
		//...


Т. е. загрузить Win Sock

Если ошибок нет - двигаться дальше:

Выполнить ряд проверок

и создать Raw Socket -


    // Create the raw socket
    s = socket(gAddressFamily, SOCK_RAW, gProtocol);



Который будет использоваться для обмена информацией с запрашиваемым узлом
сети интернет.

Если адрес узла в виде IP или доменного имени (через предшествующий параметр host)

как например

ping host megainformatic.ru

Не был задан - то ничего не происходит.

Точнее утилита просто выдает в консоль ошибку 

Pinging :: with 32 bytes of data

WSAIoctl failed: 10022
sendto failed: 10049


В конце работы обязательно освобождаются все выделенные ресурсы
и в том числе вызывается


    WSACleanup();



И ничего не происходит.


Озадачимся вопросом: Как запустить ping в режиме отладки и при
этом передать параметр узла с которым мы хотим провести проверку ?


как передать параметр в консольное приложение в режиме отладки MSVS 2005


https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#
q=%D0%BA%D0%B0%D0%BA+%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%8C+%D0
%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80+%D0%B2+%D0%BA%D0%BE%D0%BD%
D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5+%D0%BF%D1%80%D0%B8%D0%BB%D0%BE
%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B2+%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0
%B5+%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B8+MSVS+2005



http://forum.sources.ru/index.php?showtopic=275506

В MSVS 2005 студии по своему проекту правой кнопкой мышки и выбрать
Properites->Debugging->Command Arguments


как передать параметр в консольное приложение в режиме отладки MSVS 2005


Теперь можно в режиме отладки отследить по коду как используется 
заданный параметр коммандной строки: host megainformatic.ru

и собственно понять что и где происходит и как работает.

Для примера покажу как отображаются значения переменных в режиме
отладки - показано значение переменной rc после выполнения строк
кода -


    // Load Winsock
    if ((rc = WSAStartup(MAKEWORD(2,2), &wsd)) != 0)
	{
		//...



как отображаются значения переменных в режиме
отладки - для примера показано значение переменной rc после выполнения строк
кода if ((rc = WSAStartup(MAKEWORD(2,2), &wsd)) != 0)


Оно как видим равно 0, значит всё ОК. Win Sock 2 был успешно загружен,
ошибок не возникло и выполнение движется дальше по коду.


Нажимая клавишу [F10] по-шагово выполняем код строчку за строчкой и 
смотрим что меняется внутри переменных.


Например видим вызов функции ResolveAddress


    // Resolve the destination address
    dest = ResolveAddress(


Функция ResolveAddress объявлена в модуле
c:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\resolve.cpp

И выполняет реверсивный, т. е. обратный, поиск соответствия между адресом узла
и его именем.

Лучше понять как это происходит можно поставив контрольную точку внутри
функции ResolveAddress в модуле 
c:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\resolve.cpp

или в момент когда выполнение дойдёт до строки 

    // Resolve the destination address
    dest = ResolveAddress(


момент когда выполнение дойдёт до строки ResolveAddress

Воспользоваться клавишей [F11].

нажимаем клавишу [F11] чтобы попасть в реализацию функциюю ResolveAddress, описанную в модуле c:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\netds\winsock\ping\resolve.cpp


Если Вы уже ушли в исполнении дальше по коду (нажимая [F10]), то
знайте, что

вернуть исполнение на строку назад конечно нельзя.
Но вы можете просто дать приложению выполниться до конца нажав
стрелочку Continue на панели инструментов. А после того 
как приложение завершит работу, снова перезапустить его
в режиме отладки, используя эту же кнопку (после завершения работы приложения
она называется Start Debugging).


кнопка Start Debugging в среде MSVS 2005 для запуска приложения в режиме отладки


Двигаться внутри кода функции ResolveAddress можно также - нажимая [F10], а значения
переменных узнавая путём наведения на них указателя мыши.


Вы наверное уже заметили три вещи:

1) Повествование уже далеко ушло в сторону от романа Ethernity - Вечность.
2) На картинке выше, изображена контрольная точка останова - красный кружок.
3) Рассказ о Win Sock параллельно переплетается с особенностями
использования MSVS 2005 студии для отладки Ваших приложений и
изучения исходного кода примеров.

Отвечу по-порядку:

1) Повествование уже далеко ушло в сторону от романа Ethernity - Вечность.

Потому что в данный момент меня интересует эта тема, но в то же время я не
забываю про Антона, смотрю на мир его глазами, собираю новые материалы
чтобы превратить их в дальнейшее повествование. А здесь как видите
сочетается приятное с полезным. 

Не просто вольное чтение, но и какая-то полезная информация.

2) На картинке выше, изображена контрольная точка останова - красный кружок.

Кликая мышью в области левее номеров строк кода можно устанавливать красные
кружки - так называемые Breakpoints - контрольные точки остановки выполнения
программы. При выполнении в режиме отладки в пошаговом режиме программа
будет останавливать исполнение в данных точках.

Контрольные точки останова работают только на исполнимом коде.
Если вы установите точку остановки на строке комментария или объявлении
переменной, то остановки не произойдёт, потому что в данном месте
никакой код не выполняется.

Строки комментариев просто ингнорируются при компиляции, а
объявление переменных это особый механизм, который часто 
компилятор оптимизирует тем или иным способом, так что оно
тоже перестает быть исполнимым кодом в обычном понимании.


3) Рассказ о Win Sock параллельно переплетается с особенностями
использования MSVS 2005 студии для отладки Ваших приложений и
изучения исходного кода примеров.

Тут конечно на знатока или любителя. Я не знаю с какой целью
Вы читаете данный текст - праздное чтение или действительно
чему-то хотите научиться. Также я не в курсе о уровне ваших
знаний по теме изложения, поэтому веду рассказ естественно о
тех вещах, которые мне уже знакомы, и избегаю тех, которые
еще сам не изучил.

Поэтому даже если часть изложенного материала покажется Вам
"балластом" или "водой", то Вы легко можете его бегло прочитать
или вообще пропустить.

От этого, как говорится, никуда не деться.

Для тех же из Вас, что как и я, решили сочетать приятное
с полезным - условлюсь о следующем: повествование романа
будет способом отвлечься от сложного материала по программированию
и наоборот - праздное повествование будет насыщаться
полезными мыслями, данными и конечно же уроками.


далее мы узнаем о,

Практическом использовании полученных сведений из кода утилиты ping

Можно узнать IP-адрес по доменному имени ?
Как ведется работа с Windows Sockets 2 ?

И конечно история Антона и Ани будет продолжена.


к странице 1 к странице 2 к странице 3 страница 4 к странице 5

подробнее

Что такое BitTorrent (БитТоррент)

BitTorrent (дословно «поток битов») — P2P-протокол, предназначенный для обмена файлами через интернет. BitTorrent был создан программистом Брэмом Коэном.

Терминология

скрытый текст



Общие особенности

скрытый текст



Протоколы и порты

скрытый текст



Подробнее про DHT

скрытый текст



Кроме того, протокол UDP используется UDP-трекерами (не поддерживается всеми клиентами и не является официальной частью протокола) и для соединения клиентов друг с другом через UDP NAT Traversal (используется только в клиенте BitComet и не является официальной частью протокола).

Файл метаданных

скрытый текст



Трекер

скрытый текст



Работа без трекера

скрытый текст



Super seeding (cупер-сид)

скрытый текст



Программы-клиенты

скрытый текст



подробнее

Шар Бумага Карандаш / Pencil Paper and the Ball PC game



Шар Бумага Карандаш / Pencil Paper and the Ball PC game скачать





Found a barrel Нашел бочку

Вот так бродил бродил и обнаружил бочку. Она может пригодиться ?
Пока неизвестно, но взять её можно.



cave пещера

Зашел я в пещеру, а там тьма-тмущая. Тут бы пригодился фонарь. Но его нигде поблизости не было.



box ящик

Еще предмет: ящик.

С виду он бесполезен, но если его сбросить с какого-нибудь возвышения, он
развалится на доски. А вот доски уже могут пригодиться...

Кстати сам ящик тоже пригодится может.

Поэтому я не стал спешить и разбивать его на доски. Вдруг правда пригодится.



quicksand зыбучие пески

Кстати надо быть осторожным ! Кругом болота или даже зыбучие пески.

В одном месте чуть было не засосало навеки. :))))



witch house избушка бабы яги

Бродил я по лесу, видел там даже грибы растут между елок.

И на тебе, наткнулся на избушку.

Избушка избушка. А кто там живет ? Баба Яга вестимо, кто ж еще то ?





big mushroom большущий гриб

Вот это гриб ! ГРИБИЩЕ !!!





big mushroom rain большущий гриб дождь

Стоял я любовался этим грибом и тут внезапно начался дождь.





occurence прибытие

Но долго скучать мне не пришлось. Дождь конечно кончился, я побрел далее и тут ...











Шар Бумага Карандаш: Каникулы Зеленого Шарика





Ну что ж. Вот они, Каникулы.

Но что-то уж очень сыро стало на просторах Планеты.
И часты дожди, а иногда и ливни.

Чьих же это рук дело ?

Думаю виноваты Карандаш и Бумага. Своими незадачливыми действиями
они могут нарушить баланс царивший в природе.

Или я ошибаюсь ?

Однако есть еще одно действующее лицо по имени АГЕНТ ВОДА.
Вода везде, вода повсюду. Да она ВЕЗДЕСУЩА !

Вот именно !

И это тот самый шпион, который был послан самой ПЛАНЕТОЙ БОЛ.

Он сумел влиться в воды ЗЕМНОЙ ВОДЫ и стать ЕЁ ЧАСТЬЮ.

Теперь он наблюдает за ВСЕМ ЧТО ПРОИСХОДИТ. И даже за ВАМИ !!!

Бойтесь его. ТРЕПЕЩИТЕ !

Однако им попался крепкий орешек. Бриджит - это не просто красотка.
Она оказалась еще и умна.

Она сумеет противостоять даже ВСЕЛЕНСКОМУ РАЗУМУ - В лице ПЛАНЕТЫ БОЛ.

Да да ! Красота в очередной раз спасет мир. И не только красота, но
и мудрость.

Так что же мы стоим ? Вперед ! Нужно помочь Бриджит предотвратить
необратимые последствия !!!



...
Где-то в чертогах властелина ПЛАНЕТЫ БОЛ.

- Я ни за что не поверю, что она просто взяла и сошла с обложки вот
этого журнала !

- Но это так повелитель.

- Хм. Красивая женщина опасна. Умная и Красивая опасна вдвойне.
Не мне тебя учить.

Да уж, попали мы в переплет, - подумал про себя ИСПОЛНИТЕЛЬ воли
ВЛАСТЕЛИНА БОЛ.





Шар Бумага Карандаш / Pencil Paper and the Ball PC game версия 10.07.2017 скачать







Системные требования:

Windows XP / 7 / 8 / 10
directx 9c
~ 760 Mb свободного места на носителе информации.

Размер самораспаковывающегося архива: 526 Mb

Контрольные суммы для проверки целостности скачанного архива:

CRC32: A98BFB5C
MD5: 71E4E4B1278CBA74795A19639E417D7A
SHA-1: 68A4928EADECCBE7D2371684AAC6F9894BECB638

Содержимое данной страницы доступно только зарегистрированным пользователям.



Пожалуйста войдите на сайт - Вход

или пройдите процедуру регистрации - Регистрация

megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 1,0301