Esempio n. 1
0
void sendMsgRepeatFunc()
{
	std::vector<Network::ConnectionID> kConnectionIDVec;
	for (unsigned int ui = 0; ui < 100; ++ui)
	{
		if (!g_bKeepRunningFlag)
		{
			break;
		}
		Network::ConnectionID uID = kTcpNetwork.connect("127.0.0.1", 7890);
		while (uID == Network::INVALID_CONNECTION_ID)
		{
			uID = kTcpNetwork.connect("127.0.0.1", 7890);
		}
		kConnectionIDVec.push_back(uID);
	}
	char cChar = 'a';
	boost::uniform_int<> kDistribution(1, 512) ;
	boost::mt19937 kEngine ;
	boost::variate_generator<boost::mt19937, boost::uniform_int<> > kRandom(kEngine, kDistribution);

	//int i = 10;
	while (g_bKeepRunningFlag)
	{
		boost::this_thread::sleep(boost::posix_time::milliseconds(200));

		//char acBuff[] = "sendMsgRepeatFunc hello world.\n";
		//kTcpNetwork.send(uID, (unsigned char*)acBuff, strlen(acBuff));

		unsigned int uiSize = kRandom();
		char* pBuff = new char[uiSize];
		for (unsigned int ui = 0; ui < uiSize; ++ui)
		{
			pBuff[ui] = cChar;
			if (cChar == 'z')
			{
				cChar = 'a';
			}
			else
			{
				++cChar;
			}
		}
		for (unsigned int ui = 0; ui < kConnectionIDVec.size(); ++ui)
		{
			kTcpNetwork.send(kConnectionIDVec[ui], (unsigned char*)pBuff, uiSize);
		}
			
		delete[] pBuff;

		kTcpNetwork.running();
	}
}
Esempio n. 2
0
File: main.c Progetto: cocojk/os
/**
 *  임의의 X, Y 좌표를 반환
 */
void kGetRandomXY( int* piX, int* piY )
{
    int iRandom;

    // X좌표를 계산
    iRandom = kRandom();
    *piX = ABS( iRandom ) % 1000;

    // Y좌표를 계산
    iRandom = kRandom();
    *piY = ABS( iRandom ) % 700;
}
Esempio n. 3
0
void sendPacketOnceFunc()
{
	Utility::FrameRate kFrameRate;
	char cChar = 'a';
	boost::uniform_int<> kDistribution(1, 8192);
	boost::mt19937 kEngine;
	boost::variate_generator<boost::mt19937, boost::uniform_int<> > kRandom(kEngine, kDistribution);

	while (g_bKeepRunningFlag)
	{
		//boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
		Network::ConnectionID uID = kTcpNetwork.connect("192.168.1.201", 7890);
		while (uID == Network::INVALID_CONNECTION_ID)
		{
			uID = kTcpNetwork.connect("192.168.1.201", 7890);
		}
		if (uID != Network::INVALID_CONNECTION_ID)
		{
			std::cout << "sendPacketOnceFunc connected, ID = " << uID << std::endl;
			TestCommonDefine::Packet kPacket;
			unsigned int uiSize = kRandom();
			for (unsigned int ui = 0; ui < uiSize; ++ui)
			{
				kPacket.acBuff[ui] = cChar;
				if (cChar == 'z')
				{
					cChar = 'a';
				}
				else
				{
					++cChar;
				}
			}
			kPacket.uiPacketSize = uiSize + 4;
			if (kTcpNetwork.send(uID, (unsigned char*)(&kPacket), kPacket.uiPacketSize))
			{
				std::cout << uID << " send successful, packet size " << kPacket.uiPacketSize << std::endl;
				kFrameRate.stat();
				kFrameRate.showOnWindowTitle(1e3);
			}
			else
			{
				std::cout << uID << " send failed, packet size " << kPacket.uiPacketSize << std::endl;
			}
		}
		kTcpNetwork.asyncCloseConnection(uID);

		kTcpNetwork.running();
	}
}
Esempio n. 4
0
File: main.c Progetto: cocojk/os
/**
 *  임의의 색을 반환
 */
COLOR kGetRandomColor( void )
{
    int iR, iG, iB;
    int iRandom;

    iRandom = kRandom();
    iR = ABS( iRandom ) % 256;

    iRandom = kRandom();
    iG = ABS( iRandom ) % 256;

    iRandom = kRandom();
    iB = ABS( iRandom ) % 256;

    return RGB( iR, iG, iB );
}
Esempio n. 5
0
void sendPacketRepeatFunc()
{
	Utility::FrameRate kFrameRate;

	std::vector<Network::ConnectionID> kConnectionIDVec;
	for (unsigned int ui = 0; ui < 100; ++ui)
	{
		if (!g_bKeepRunningFlag)
		{
			break;
		}

		//boost::this_thread::sleep(boost::posix_time::milliseconds(50));

		Network::ConnectionID uID = kTcpNetwork.connect("192.168.1.201", 7890);
		while (uID == Network::INVALID_CONNECTION_ID)
		{
			uID = kTcpNetwork.connect("192.168.1.201", 7890);
			if (!g_bKeepRunningFlag)
			{
				return;
			}
		}
		kConnectionIDVec.push_back(uID);
	}
	char cChar = 'a';
	boost::uniform_int<> kDistribution(1, 8192);
	boost::mt19937 kEngine ;
	boost::variate_generator<boost::mt19937, boost::uniform_int<> > kRandom(kEngine, kDistribution);

	TestCommonDefine::Packet kPacket;
	while (g_bKeepRunningFlag)
	{
		boost::this_thread::sleep(boost::posix_time::milliseconds(10));

		unsigned int uiSize = /*120 * 1024 - 4;*/kRandom();
		for (unsigned int ui = 0; ui < uiSize; ++ui)
		{
			kPacket.acBuff[ui] = cChar;
			if (cChar == 'z')
			{
				cChar = 'a';
			}
			else
			{
				++cChar;
			}
		}
		kPacket.uiPacketSize = uiSize + 4;

		for (unsigned int ui = 0; ui < kConnectionIDVec.size(); ++ui)
		{
			boost::posix_time::ptime uiBeginTick = boost::posix_time::microsec_clock::local_time();
			unsigned int uiTotalPacketCnt = 0;
			unsigned int uiDataSizeCnt = 0;
			unsigned int uiFrameRate = 0;

			if (kTcpNetwork.send(kConnectionIDVec[ui], (unsigned char*)(&kPacket), kPacket.uiPacketSize))
			{
				kFrameRate.stat();
				kFrameRate.showOnWindowTitle(1e3);

				//boost::this_thread::sleep(boost::posix_time::milliseconds(1));

				uiDataSizeCnt += kPacket.uiPacketSize;
				++uiFrameRate;

				boost::posix_time::time_duration uiRunTick = boost::posix_time::microsec_clock::local_time() - uiBeginTick;
				if (uiRunTick.seconds() > 1)
				{
					std::cout <<uiFrameRate << " frames " << kConnectionIDVec[ui] << " sent data size " << uiDataSizeCnt << std::endl;
					uiDataSizeCnt = 0;
					uiFrameRate = 0;
					uiBeginTick = boost::posix_time::microsec_clock::local_time();
				}

				++uiTotalPacketCnt;
			}
			else
			{
				std::cout << kConnectionIDVec[ui] << " send failed " << uiTotalPacketCnt << std::endl;
			}
		}
		kTcpNetwork.running();
	}
}
Esempio n. 6
0
File: main.c Progetto: cocojk/os
/**
 *  그래픽 모드를 테스트하는 함수
 */
void kStartGraphicModeTest()
{
    VBEMODEINFOBLOCK* pstVBEMode;
    int iX1, iY1, iX2, iY2;
    COLOR stColor1, stColor2;
    int i;
    char* vpcString[] = { "Pixel", "Line", "Rectangle", "Circle", "MINT64 OS~!!!" };

    //==========================================================================
    // 점, 선, 사각형, 원, 그리고 문자를 간단히 출력
    //==========================================================================
    // (0, 0)에 Pixel이란 문자열을 검은색 바탕에 흰색으로 출력
    kDrawText( 0, 0, RGB( 255, 255, 255), RGB( 0, 0, 0 ), vpcString[ 0 ],
               kStrLen( vpcString[ 0 ] ) );
    // 픽셀을 (1, 20), (2, 20)에 흰색으로 출력
    kDrawPixel( 1, 20, RGB( 255, 255, 255 ) );
    kDrawPixel( 2, 20, RGB( 255, 255, 255 ) );

    // (0, 25)에 Line이란 문자열을 검은색 바탕에 빨간색으로 출력
    kDrawText( 0, 25, RGB( 255, 0, 0), RGB( 0, 0, 0 ), vpcString[ 1 ],
               kStrLen( vpcString[ 1 ] ) );
    // (20, 50)을 중심으로 (1000, 50) (1000, 100), (1000, 150), (1000, 200),
    // (1000, 250)까지 빨간색으로 출력
    kDrawLine( 20, 50, 1000, 50, RGB( 255, 0, 0 ) );
    kDrawLine( 20, 50, 1000, 100, RGB( 255, 0, 0 ) );
    kDrawLine( 20, 50, 1000, 150, RGB( 255, 0, 0 ) );
    kDrawLine( 20, 50, 1000, 200, RGB( 255, 0, 0 ) );
    kDrawLine( 20, 50, 1000, 250, RGB( 255, 0, 0 ) );

    // (0, 180)에 Rectangle이란 문자열을 검은색 바탕에 녹색으로 출력
    kDrawText( 0, 180, RGB( 0, 255, 0), RGB( 0, 0, 0 ), vpcString[ 2 ],
               kStrLen( vpcString[ 2 ] ) );
    // (20, 200)에서 시작하여 길이가 각각 50, 100, 150, 200인 사각형을 녹색으로 출력
    kDrawRect( 20, 200, 70, 250, RGB( 0, 255, 0 ), FALSE );
    kDrawRect( 120, 200, 220, 300, RGB( 0, 255, 0 ), TRUE );
    kDrawRect( 270, 200, 420, 350, RGB( 0, 255, 0 ), FALSE );
    kDrawRect( 470, 200, 670, 400, RGB( 0, 255, 0 ), TRUE );

    // (0, 550)에 Circle이란 문자열을 검은색 바탕에 파란색으로 출력
    kDrawText( 0, 550, RGB( 0, 0, 255), RGB( 0, 0, 0 ), vpcString[ 3 ],
               kStrLen( vpcString[ 3 ] ) );
    // (45, 600)에서 시작하여 반지름이 25, 50, 75, 100인 원을 파란색으로 출력
    kDrawCircle( 45, 600, 25, RGB( 0, 0, 255 ), FALSE ) ;
    kDrawCircle( 170, 600, 50, RGB( 0, 0, 255 ), TRUE ) ;
    kDrawCircle( 345, 600, 75, RGB( 0, 0, 255 ), FALSE ) ;
    kDrawCircle( 570, 600, 100, RGB( 0, 0, 255 ), TRUE ) ;

    // 키 입력 대기
    kGetCh();

    //==========================================================================
    // 점, 선, 사각형, 원, 그리고 문자를 무작위로 출력
    //==========================================================================
    // q 키가 입력될 때까지 아래를 반복
    do
    {
        // 점 그리기
        for( i = 0 ; i < 100 ; i++ )
        {
            // 임의의 X좌표와 색을 반환
            kGetRandomXY( &iX1, &iY1 );
            stColor1 = kGetRandomColor();

            // 점 그리기
            kDrawPixel( iX1, iY1, stColor1 );
        }

        // 선 그리기
        for( i = 0 ; i < 100 ; i++ )
        {
            // 임의의 X좌표와 색을 반환
            kGetRandomXY( &iX1, &iY1 );
            kGetRandomXY( &iX2, &iY2 );
            stColor1 = kGetRandomColor();

            // 선 그리기
            kDrawLine( iX1, iY1, iX2, iY2, stColor1 );
        }

        // 사각형 그리기
        for( i = 0 ; i < 20 ; i++ )
        {
            // 임의의 X좌표와 색을 반환
            kGetRandomXY( &iX1, &iY1 );
            kGetRandomXY( &iX2, &iY2 );
            stColor1 = kGetRandomColor();

            // 사각형 그리기
            kDrawRect( iX1, iY1, iX2, iY2, stColor1, kRandom() % 2 );
        }

        // 원 그리기
        for( i = 0 ; i < 100 ; i++ )
        {
            // 임의의 X좌표와 색을 반환
            kGetRandomXY( &iX1, &iY1 );
            stColor1 = kGetRandomColor();

            // 원 그리기
            kDrawCircle( iX1, iY1, ABS( kRandom() % 50 + 1 ), stColor1, kRandom() % 2 );
        }

        // 텍스트 표시
        for( i = 0 ; i < 100 ; i++ )
        {
            // 임의의 X좌표와 색을 반환
            kGetRandomXY( &iX1, &iY1 );
            stColor1 = kGetRandomColor();
            stColor2 = kGetRandomColor();

            // 텍스트 출력
            kDrawText( iX1, iY1, stColor1, stColor2, vpcString[ 4 ],
                       kStrLen( vpcString[ 4 ] ) );
        }
    } while( kGetCh() != 'q' );

    //==========================================================================
    // 윈도우 프로토타입을 출력
    //==========================================================================
    // q 키를 눌러서 빠져 나왔다면 윈도우 프로토타입을 표시함
    while( 1 )
    {
        // 배경을 출력
        kDrawRect(0, 0, 1024, 768, RGB( 232, 255, 232 ), TRUE );

        // 윈도우 프레임을 3개 그림
        for( i = 0 ; i < 3 ; i++ )
        {
            kGetRandomXY( &iX1, &iY1 );
            kDrawWindowFrame( iX1, iY1, 400, 200, "MINT64 OS Test Window" );
        }

        kGetCh();
    }
}