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


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

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка
Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка [Содержание]  [Далее] Если Вы всерьез решили заняться созданием игр, то должны понимать, что это каторжный и неблагодарный труд ! Большинство ваших первых проектов обречены на забвение.
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Дневник памяти - фильм 2004

megainformatic - Scooter - The night - Video and Lyrics - Скутер - Ночь - Видео и лирика

megainformatic - Если всё же неудача

megainformatic - Смерть или искупление или избавление

megainformatic - По ту сторону

cj megainformatic - музыкальный альбом БЕСКОНЕЧНОЕ ДВИЖЕНИЕ ОЖИДАНИЕ И ДЕЙСТВИЕ

megainformatic - Костя Коробкин - Секретный проект - интерактивный комикс

megainformatic - Основы анимации во флеш на примере анимирования простейшей окружности

megainformatic - Парсер сайтов Введение

megainformatic - Я пишу музыку для себя и для продажи

megainformatic - Статьи на околомузыкальные темы - осень 2014 часть 1

megainformatic - рассказ - Чужие воспоминания - автор Синицин Андрей - 24.09.2014

megainformatic - Сайты живущие вне поисковых систем. Есть ли такие и как их найти ?

megainformatic - Game craft - проект разработки игровых и мультимедийных проектов

megainformatic - Game craft - моделируем scv

megainformatic - Game craft - моделируем scv - шаг 1 (часть 2)

megainformatic - Game craft - моделируем scv - шаг 2 (часть 3)

megainformatic - Game craft - Наложение текстуры на модель робота scv (часть 4)

megainformatic - Game craft - Прорисовка текстуры робота SCV шаг 5

megainformatic - Game craft - Экспорт модели из 3ds max в формат X

megainformatic - Game craft - отображение scv модели в формате x в d3d9-приложении

megainformatic - Game craft - управление игрой от Direct Input в d3d9 - приложении

megainformatic - Game craft - игровая камера в d3d9 - приложении

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 4

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 5

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 6

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 7

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 4

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 5

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 6

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 7

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 1

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 2

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 3

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 4

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 5

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 6

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 7

megainformatic - Веселый Буквоежка - онлайн комикс - страница 1

megainformatic - Веселый Буквоежка - онлайн комикс - страница 2

megainformatic - Веселый Буквоежка - онлайн комикс - страница 3

megainformatic - Веселый Буквоежка - онлайн комикс - страница 4

megainformatic - Веселый Буквоежка - онлайн комикс - страница 5

megainformatic - Веселый Буквоежка - онлайн комикс - страница 6

megainformatic - Веселый Буквоежка - онлайн комикс - страница 7

megainformatic - Веселый Буквоежка - онлайн комикс - страница 8

megainformatic - Веселый Буквоежка - онлайн комикс - страница 9

megainformatic - Веселый Буквоежка - онлайн комикс - страница 10

megainformatic - Веселый Буквоежка - онлайн комикс - страница 11

megainformatic - Веселый Буквоежка - онлайн комикс - страница 12

подробнее

     
 
megainformatic cms free

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

megainformatic cms express files - это простое, быстрое и очень компактное решение для создания первого вашего сайта. НЕ ИСПОЛЬЗУЕТ базы данных mysql. Вместо этого используются файловые базы данных. Поэтому Вы можете использовать систему даже на хостинге с поддержкой php, но без поддержки баз данных my sql.

Очень проста в установке - достаточно вам скопировать все файлы на ваш хостинг и сайт готов к работе !!!

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

Стоимость: 100 руб.
 
     
 

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

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

- очень компакта и быстра в работе и развертывании сайта;

- открытый исходный код на php;

- быстрая и простая установка;

- подробное описание возможностей;

 
     
 

Чтобы создать свой сайт быстро и легко - приобретите megainformatic cms express files всего за 100 рублей, получите дистрибутив, распакуйте его и скопируйте полученные файлы на свой хостинг.

Ваш сайт готов к работе !!!

 
     
  Для добавления новых статей на ваш сайт - достаточно выложить файл контента в нужную папку, например papers/my_paper1  
     
 

А затем добавить описание в файл data/papers.csv для этой статьи.

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

Модули поиска и карты сайта автоматически собирают информацию о добавленных статьях из файла статей.

 
     
 

Если возможности megainformatic cms express files, вам кажутся ограниченными и Вы хотите чего-то большего - обратите внимание на следующие продукты -

megainformatic cms e-pro

 
     
  megainformatic cms e-shop  
     
  megainformatic cms e-mailer  
     
  Удачи вам в создании собственного виртуального интернет-пространства !!!  
     
     
     
подробнее

     
  эмулятор игры Ну, Погоди!  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [назад] [страница 1] [далее]  
     
  Matrices - Матрицы - страница 1  
     
 

Итак, Мы подошли с Вами к изучение примера Matrices

Он построен всецело на тех же принципах, что и примеры CreateDevice и Vertices.

Нововведением является использование функции анимирования FrameMove, которая правда пока не вынесена в отдельную функцию, а называется пока SetupMatrices, кроме того, рассмотрен принцип трансформаций моделей с применением матриц на примере вращения простейшей модели в виде треугольника.

 
     
 

В сущности код примера Matrices это тот же самый код, что и Vertices.

Основное отличие - добавлена функция SetupMatrices

VOID SetupMatrices()
{
// матрица 3d-мира - world matrix, мы просто вращаем объект вокруг оси Y.
D3DXMATRIXA16 matWorld;

// задаем матрицу вращения для генерации полного оборота в 2*Пи-радиан
// каждые 1000 ms (миллисекунд). Для предупреждения потери точности
// в вычислениях, системное время модулируется и умножается на период вращения
// до преобразования в угол поворота в радианах

UINT iTime = timeGetTime() % 1000;
FLOAT fAngle = iTime * ( 2.0f * D3DX_PI ) / 1000.0f;
D3DXMatrixRotationY( &matWorld, fAngle );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

// Настраиваем view matrix - матрицу Вида. Матрица вида определяется как
// положение глаза vEyePt, положение точки куда смотрит глаз vLookatPt и

//направление в котором должен быть поднят глаз vUpVec. Здесь

//указываются конкретные векторные координаты для этих точек
D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView;

//по ним строится матрица Вида и задается в качестве таковой
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

// Матрица Проецирования - projection matrix - это перспективное преобразование
// приводящее геометрию из 3D пространства вида к 2D пространству экрана Viewport,
// (перспектива приводит к уменьшению удаленных на расстояние объектов). Для
// построения Перспективной трансформации, Мы используем Угол обзора field of view

// 1/4 pi что является наиболее распространенным,
// Соотношение длины экрана к ширине - aspect ratio, и ближний near и дальний far планы // привязки (которые определяют дистанцию, на которой следует отрисовывать

// геометрию).

D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI / 4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}

 
     
 

Функция Render также претерпела небольшие изменения - перед выполнением отрисовки сцены вызывается метод её анимирования -

// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// вообще говоря, данный метод должен вызываться вне скобок BeginScene..EndScene

//кроме того, более правильно и понятно будет создать отдельную функцию FrameMove, //разместить вызов функции SetupMatrices внутри неё, а отсюда убрать.

//вызов метода FrameMove организовать внутри wWinMain
SetupMatrices();

// Render the vertex buffer contents
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );

// End the scene
g_pd3dDevice->EndScene();
}

 
     
 

Вот как должны выглядеть описанные исправления -

//FrameMove()

VOID FrameMove()
{
// Setup the world, view, and projection matrices
SetupMatrices();
}

//Render()

VOID Render()
{
// Clear the backbuffer to a black color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0, 0, 0 ), 1.0f, 0 );

// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Setup the world, view, and projection matrices
//SetupMatrices();

// Render the vertex buffer contents
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );

// End the scene
g_pd3dDevice->EndScene();
}

// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

//wWinMain

INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
{
// Register the window class
WNDCLASSEX wc =
{
sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
L"D3D Tutorial", NULL
};
RegisterClassEx( &wc );

// Create the application's window
HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 03: Matrices",
WS_OVERLAPPEDWINDOW, 100, 100, 256, 256,
NULL, NULL, wc.hInstance, NULL );

// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Create the scene geometry
if( SUCCEEDED( InitGeometry() ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg;
ZeroMemory( &msg, sizeof( msg ) );
while( msg.message != WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else {
FrameMove();
Render();
}
}
}
}

UnregisterClass( L"D3D Tutorial", wc.hInstance );
return 0;
}

 
     
  Оранжевым цветом я пометил добавленный или исправленный код.  
     
 

Вы также заметите, что в данном примере применяется другой тип вершин -

// описание структуры для типа вершин
struct CUSTOMVERTEX
{
FLOAT x, y, z; // untransformed - нетрансформировання, 3D позиция вершины
DWORD color; // вершинный цвет
};

// формат FVF, описывающий применяемый тип вершины - вершина содержит только

// описание положения и вершинного цвета
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)

 
     
 

Слегка изменилась и функция InitD3D -

добавились строки кода

// отключаем culling, так как требуется сделать видимой переднюю и заднюю грани

// треугольника
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

// Отключаем D3D освещение, поскольку Мы используем собственный цвет вершин
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

 
     
  В качестве задания для самостоятельной работы попробуйте выполнить модификацию данного примера, чтобы использовать вращающийся квадрат вместо вращающегося треугольника.  
     
     
  [содержание] [назад] [страница 1] [далее]  
     
подробнее

Fez - игра для PC 2013 год

2013 год, разработчик Polytron
инди-игра жанра головоломка/платформер, разработанная независимой студией Polytron

Описание игры

инди-игра жанра головоломка/платформер, разработанная независимой студией Polytron

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


Fez игра головоломка для PC
Fez игра головоломка для PC
Fez игра головоломка для PC
Fez игра головоломка для PC


Трейлер

 


Размер файлов - 886 Мб

музыка из игры + установщик игры

Fez - игра для PC 2013 год СКАЧАТЬ ТОРРЕНТ
[downloads:32]

Для скачиваня торрент раздачи вам потребуется программа mu-torrent (скачивайте бесплатную версию)

КАК ТУТ СКАЧИВАТЬ ?

===========================
ПРАВООБЛАДАТЕЛЯМ - файлы представленные здесь для скачивания не являются собственностью автора публикации, взяты из общедоступных источников информации и не используются для продажи, сдачи в прокат или иного способа извлечения коммерческой выгоды.

Сайт не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм

подробнее

роман 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

Статьи на тему создания сайтов и других областях информатики

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

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



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


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