亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wdp_sms.cpp

?? Cellcore. ExTAPI,ExTAPIAsync,SMS,TAPI
?? CPP
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//

//
// WDP_SMS.CPP
//
// Simple application sending and receiving WDP messages over SMS bearer.
// This is a demonstration of how to use SMS to transport data.
// *** To use this sample, you must change the const c_szAddress[] to match
// *** the SMS number of the device running the sample. 
//

#include <windows.h>
#include <wap.h>

// Message waiting timeout in seconds
#define TIMEOUT			300

// Number to send/receive data
// REPLACE WITH THE SMS NUMBER OF THE DEVICE RUNNING THE SAMPLE
const TCHAR c_szAddress[] = TEXT("14258828080");

// Data to send
const TCHAR c_szData[] = TEXT("This is a demo of using WDP/SMS to transport data.");

// String appended to outputed data
const TCHAR c_szHeader[] = TEXT("WDP_SMS_DEMO: "); 

//////////////////////////////////////////////////////////////////////
// DebugOutput
//  Printf-like wrapping around OutputDebugString.
//
// Parameters:
//  szFormat        Formatting string (as in printf).
//  ...             Additional arguments.
//////////////////////////////////////////////////////////////////////

void DebugOutput(LPCTSTR szFormat, ...)
{
    const size_t c_cchBufferSize = 1024;
    TCHAR  szBuffer[c_cchBufferSize];
    LPTSTR pszBufferEnd = NULL;
    size_t cchRemaining = 0;

    va_list pArgs;
    va_start(pArgs, szFormat);
    StringCchCopyEx(szBuffer, c_cchBufferSize, c_szHeader, &pszBufferEnd, &cchRemaining, 0);
    StringCchVPrintfEx(pszBufferEnd, cchRemaining, &pszBufferEnd, &cchRemaining, 0, szFormat, pArgs);
    va_end(pArgs);

    StringCchCatEx(pszBufferEnd, cchRemaining, TEXT("\r\n"), &pszBufferEnd, &cchRemaining, 0);

    OutputDebugString(szBuffer);
}


///////////////////////////////////////////////////////////////////////
// Fill in the fields in T_UNITDATA primitive
///////////////////////////////////////////////////////////////////////
void PreparePrimitive( WDP_UNITDATA* const pPrimitive,
                       const WAP_ADDRESS waSender,   const DWORD dwSenderPort,
                       const WAP_ADDRESS waReceiver, const DWORD dwReceiverPort,
                       const BYTE*       pbUserData, const DWORD dwUserDataSize )
{
    ASSERT(pPrimitive && pbUserData);

    pPrimitive->wpiPrimitiveID        = WAP_PRIMITIVE_ID_T_DUNITDATA;
    pPrimitive->wptPrimitiveType      = WAP_PRIMITIVE_TYPE_REQUEST;
    pPrimitive->dwValidFields         = WDP_FIELD_SOURCEADDRESS      |
                                        WDP_FIELD_SOURCEPORT         |
                                        WDP_FIELD_DESTINATIONADDRESS |
                                        WDP_FIELD_DESTINATIONPORT    |
                                        WDP_FIELD_USERDATA;
    pPrimitive->waSourceAddress       = waSender;
    pPrimitive->dwSourcePort          = dwSenderPort;
    pPrimitive->waDestinationAddress  = waReceiver;
    pPrimitive->dwDestinationPort     = dwReceiverPort;
    pPrimitive->pbUserData            = pbUserData;
    pPrimitive->dwUserDataSize        = dwUserDataSize;
}


//////////////////////////////////////////////////////////////////////////////////////////////////
//  This program demonstrates how to send data via WDP/SMS. It creates two WDP clients on the same
//  device ( thus same sms address ) but different port. One client sends data to the other one.
//  
//  Return: 0 for success, -1 for failure
//////////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain( 
	HINSTANCE hInstance, 
	HINSTANCE hPrevInstance, 
	LPWSTR lpCmdLine, 
	int nCmdShow 
	)
{   
    WAP_HANDLE  whSender, whReceiver;
    HANDLE  hSenderMsgEvent, hReceiverMsgEvent;
    DWORD   dwSenderPort   = 1234;
    DWORD   dwReceiverPort = 1235;    
	BOOL    fOK = TRUE;
    DWORD	dwDataSize = sizeof(c_szData);
    WDP_UNITDATA   wuToSend;

    // Sender and receiver's address (hard-coded)
    WAP_ADDRESS waAddress;
    waAddress.watAddressType = WAP_ADDRESS_TYPE_GSM_SMS;
    _tcscpy(waAddress.ptsAddress, c_szAddress);

    DebugOutput(_T("WDP_SMS data sending and receiving demo"));

    // Create two WDP clients on different ports
	DebugOutput(_T("Creating sender and receiver..."));

    // Create sender
    if (SUCCEEDED(WapOpen(WAP_LAYER_WDP, dwSenderPort, &whSender, &hSenderMsgEvent)))
    {
        DebugOutput(_T("Sender created on port %d."), dwSenderPort);

        // Create receiver
        if(SUCCEEDED(WapOpen(WAP_LAYER_WDP, dwReceiverPort, &whReceiver, &hReceiverMsgEvent)))
        {
            DebugOutput(_T("Receiver created on port %d."), dwReceiverPort);
        }
        else
        {
            DebugOutput(_T("Error!  Fail to create receiver!"));
            WapClose(whSender);
            return -1;
        }
        DebugOutput(_T("Sender and receiver's address: %s"), waAddress.ptsAddress);
    }
    else
    {
        DebugOutput(_T("Error!  Fail to create sender!"));
        return -1;
    }

    // Prepare a WDP primitive for sender to send    
	DebugOutput(_T("Date to be sent from sender to receiver: %s"), c_szData);
	DebugOutput(_T("Size of the data: %d bytes"), dwDataSize);
    
    // Prepare the wdp primitive
    PreparePrimitive(&wuToSend, waAddress, dwSenderPort, waAddress, dwReceiverPort, (BYTE *) c_szData, dwDataSize);
    
    // Send the primitive to receiver
    DebugOutput(_T("Sender sending data to receiver."));

	if (SUCCEEDED(WapSend(whSender, (WAP_PRIMITIVE_BASE *) &wuToSend)))    
    {            
		DebugOutput(_T("Sending OK."));

        // Receiver waits for incoming message
        DebugOutput(_T("Receiver waiting %u secs for message..." ), TIMEOUT );

        if (WAIT_OBJECT_0 == WaitForSingleObject(hReceiverMsgEvent, TIMEOUT * 1000)) 
        {
            DebugOutput(_T("Receiver got message"));
                    
            // Get primitive size in order to read it
            DWORD dwSize = 0;
            if (SUCCEEDED(WapGetNextPrimitiveSize(whReceiver, &dwSize)) && dwSize) 
            {  
	            DebugOutput(_T("Get primitive size:  %u"), dwSize);
    
				// Allocate buffer to hold incoming message
	            BYTE *pbBuffer = new BYTE[dwSize];
                
				if (pbBuffer)
                {
                    // Read the primitive   
                    if (SUCCEEDED(WapRead(whReceiver, (WAP_PRIMITIVE_BASE *) pbBuffer, dwSize)))    
                    {
                        // Successfully read the primitive
                        DebugOutput(_T("Receiver successfully read the primitive."));

                        WDP_UNITDATA *pReceived = (WDP_UNITDATA *) pbBuffer;

                        // Now validate the primitive
                        if ((WAP_PRIMITIVE_ID_T_DUNITDATA == pReceived->wpiPrimitiveID) && (WAP_PRIMITIVE_TYPE_INDICATION == pReceived->wptPrimitiveType))
                        {
                            // Print sources address
                            if (WTP_FIELD_SOURCEADDRESS & pReceived->dwValidFields)
                            {
                                TCHAR ptsAddress[MAX_WAP_ADDRESS_LENGTH];

                                 _tcsncpy(ptsAddress, pReceived->waSourceAddress.ptsAddress,MAX_WAP_ADDRESS_LENGTH);
                                ptsAddress[MAX_WAP_ADDRESS_LENGTH - 1] = _T('\0');    // force it to be NULL-terminated
                                DebugOutput(_T("Primitive's source address: %s"), ptsAddress);
                            }
                            else
                            {
                                DebugOutput(_T("Error! Missing source address."));
                                fOK = FALSE;
                            }

                            // Compare received data with sent data
                            if ((WDP_FIELD_USERDATA & pReceived->dwValidFields) && (pReceived->pbUserData))
                            {
                                // Compare data size
                                DebugOutput(_T("Received user data size: %d"), pReceived->dwUserDataSize);
                                if (pReceived->dwUserDataSize == dwDataSize)
                                {
                                    DebugOutput(_T("Data size comparison succeeded."));
                                    
									// Compare data content
                                    if (!memcmp(c_szData, pReceived->pbUserData, dwDataSize))
                                    {   
										// Print received user data
                                        DebugOutput(_T("Received data: %s"), pReceived->pbUserData);
                                        DebugOutput(_T("Data content comparison succeeded"));
                                    }
                                    else
                                    {
                                        DebugOutput(_T("Error! Data content comparison failed."));
                                        fOK = FALSE;
                                    }                                                              
                                }
                                else
                                {
                                    DebugOutput(_T("Error! Data size comparison failed"));
                                    fOK = FALSE;
                                }
                            }
                            else
                            {
                                DebugOutput(_T("Error! Missing user data."));
                                fOK = FALSE;
                            }
                        }
                        else
                        {
                            DebugOutput(_T("Error! Invalid primitive ID or primitive type."));
                            fOK = FALSE;
                        }
                    }
                    else
                    {
                        DebugOutput(_T("Error! Receiver failed to read primitive"));
                        fOK = FALSE;
                    }
                        delete [] pbBuffer;
                }
                else
                {
		            DebugOutput(_T("Error! Receiver fail to allocate buffer to hold incoming message."));
                    fOK = FALSE;
                }                   
                
			}
            else
            {                    
                DebugOutput(_T( "Error! Receiver failed to get primitive size" ) );
                fOK = FALSE;
            }
            
		}
        else    
        {
            DebugOutput(_T("Warning! Receiver timed out waiting for message" ) );
            fOK = FALSE;
        }
        
	}
    else    
    {
        DebugOutput(_T("Error!  Fail to send data!"));
        fOK = FALSE;
    }

    // Clean up
    WapClose(whSender);
    WapClose(whReceiver);

    DebugOutput(_T("Send and receive %s. Exit."), ((fOK) ? _T("succeeded") : _T("failed")));

    return ((fOK) ? 0 : -1);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀久久99精品久久久久宅男| 国产成人高清在线| 色94色欧美sute亚洲线路一久| 欧美一级日韩一级| 天堂在线亚洲视频| 日韩一区二区视频在线观看| 日韩激情视频在线观看| 欧美日本一区二区| 日韩和的一区二区| 日韩欧美一区二区三区在线| 蜜桃av噜噜一区| 欧美视频一区二区| 免费看精品久久片| 久久久久久黄色| 懂色一区二区三区免费观看| 国产精品久久久久久妇女6080 | 亚洲另类在线一区| 91麻豆精品秘密| 一级女性全黄久久生活片免费| 99精品欧美一区| 国产精品久久久久aaaa樱花| a美女胸又www黄视频久久| 亚洲欧洲三级电影| 欧美性猛片aaaaaaa做受| 亚洲大片一区二区三区| 91麻豆精品国产91久久久资源速度| 日本不卡一二三区黄网| 日韩欧美国产一区二区在线播放 | 在线观看日韩国产| 亚洲成人精品影院| 日韩欧美一区二区久久婷婷| 国产成人精品www牛牛影视| 国产精品国产三级国产专播品爱网 | 另类小说综合欧美亚洲| 在线观看91av| 从欧美一区二区三区| 亚洲女厕所小便bbb| 欧美性生活大片视频| 另类小说综合欧美亚洲| 中文字幕精品综合| 在线观看区一区二| 国产精品一品二品| 亚洲欧洲精品一区二区精品久久久 | 久久夜色精品国产欧美乱极品| 国产精一区二区三区| 亚洲在线一区二区三区| 欧美成人猛片aaaaaaa| 成人动漫一区二区在线| 日韩电影在线看| 国产精品久久久久久久久免费桃花| 欧美日韩久久一区| 国产成人免费xxxxxxxx| 亚洲成a人在线观看| 国产日韩欧美在线一区| 色一情一乱一乱一91av| 激情图片小说一区| 亚洲电影中文字幕在线观看| 欧美国产精品专区| 日韩视频永久免费| 欧美性色黄大片| 高清国产午夜精品久久久久久| 亚洲一区在线观看网站| 国产欧美日韩三级| 日韩天堂在线观看| 欧美性欧美巨大黑白大战| 成人免费观看视频| 国内一区二区在线| 亚洲国产视频直播| 综合电影一区二区三区 | 一区二区三区精品在线| 国产无一区二区| 日韩精品一区二区三区在线观看 | 99在线精品一区二区三区| 久草中文综合在线| 日韩精品亚洲一区二区三区免费| 日本一区二区三区dvd视频在线| 91精品国产一区二区三区| 91精彩视频在线| 成人精品鲁一区一区二区| 99国产精品久久久久久久久久| 国产美女精品人人做人人爽| 奇米色一区二区三区四区| 亚洲免费伊人电影| 亚洲日本va午夜在线影院| 久久久久久久久久久久久久久99| 91麻豆精品国产91久久久久久久久| 91麻豆国产在线观看| 国产最新精品免费| 日韩av中文字幕一区二区| 亚洲乱码国产乱码精品精的特点| 国产亚洲人成网站| 国产日韩一级二级三级| 国产亚洲午夜高清国产拍精品| 精品少妇一区二区三区在线播放| 91麻豆精品国产91久久久| 制服丝袜av成人在线看| 欧美精品1区2区| 日韩欧美123| 欧美成人高清电影在线| 精品久久久久久久久久久久久久久 | 91色九色蝌蚪| 在线精品观看国产| 欧美日韩三级一区二区| 欧美精品日韩一本| 欧美一区二区高清| 精品处破学生在线二十三| 久久久久久久久久久电影| 欧美成人三级电影在线| 精品粉嫩aⅴ一区二区三区四区| 欧美精品一区二区三区蜜桃| 久久九九全国免费| 国产精品久久久99| 亚洲综合激情另类小说区| 日产精品久久久久久久性色| 美女尤物国产一区| 国产成人精品亚洲777人妖| 色综合久久综合| 这里只有精品视频在线观看| 欧美日韩卡一卡二| 亚洲精品在线一区二区| 国产精品丝袜一区| 亚洲一区视频在线观看视频| 奇米影视在线99精品| 国产精品自在在线| 色噜噜狠狠成人中文综合| 777xxx欧美| 久久亚洲二区三区| 国产欧美日本一区视频| 亚洲视频精选在线| 免费在线观看不卡| 成人小视频免费在线观看| 欧亚洲嫩模精品一区三区| 精品欧美久久久| 亚洲乱码国产乱码精品精可以看| 日本亚洲三级在线| 成人高清在线视频| 国产日韩欧美不卡| 国产精品国产成人国产三级| 日韩av二区在线播放| 成人激情校园春色| 日韩欧美123| 一区二区三区中文在线观看| 美国十次了思思久久精品导航| 成人激情图片网| 日韩欧美激情四射| 一区二区三区欧美在线观看| 国产精品一色哟哟哟| 在线观看一区二区精品视频| 国产欧美精品一区二区色综合| 婷婷一区二区三区| 国产伦精一区二区三区| 色偷偷久久一区二区三区| 精品卡一卡二卡三卡四在线| 国产精品久久久久7777按摩| 久久精品国产网站| 欧美日韩中文字幕一区| 国产精品天天看| 国产综合色视频| 欧美女孩性生活视频| 亚洲欧洲韩国日本视频| 国内外成人在线| 欧美日韩另类一区| 亚洲另类在线制服丝袜| 色妹子一区二区| 亚洲一区二区视频在线观看| 91视频www| 亚洲一区二区av在线| 欧美视频中文字幕| 亚洲成a人在线观看| 4438亚洲最大| 麻豆国产精品777777在线| 欧美刺激午夜性久久久久久久| 久久99久国产精品黄毛片色诱| 日韩欧美自拍偷拍| 国产自产高清不卡| 国产欧美日韩在线看| 91一区二区在线观看| 一区二区三区在线高清| 欧美日韩专区在线| 久热成人在线视频| 久久久亚洲精品石原莉奈| 国产高清精品久久久久| 中文字幕精品一区二区三区精品| 99久久婷婷国产综合精品电影| 亚洲欧美日韩国产一区二区三区| 色一情一乱一乱一91av| 午夜电影网一区| 精品成人在线观看| 99久久精品情趣| 婷婷国产在线综合| 国产天堂亚洲国产碰碰| 91蜜桃婷婷狠狠久久综合9色| 亚洲午夜激情av| 欧美成人三级电影在线| 岛国av在线一区| 亚洲国产欧美在线人成| 日韩女同互慰一区二区| 不卡一区二区中文字幕| 视频一区在线播放| 欧美韩国日本综合|