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

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

?? nbdgram.c

?? 一個很好的TCP和UDP端口控制的例子!稍加改動
?? C
?? 第 1 頁 / 共 2 頁
字號:
// Module Name: Nbdgram.c
//
// Description:
//    This application demonstrates the various datagram operations
//    possible from NetBIOS.  This includes sending and receiving
//    both directed and group datagrams as well as broadcast datagrams.
//
// Compile:
//    cl -o Nbdgram.exe Nbdgram.c ..\Common\Nbcommon.obj
//      Netapi32.lib User32.lib
//
// Command Line Options:
//    nbdgram.exe options
//    -n:NAME    Register my unique name NAME
//    -g:NAME    Register my group name NAME
//    -s         I will be sending datagrams
//    -c:xxx     Number of datagrams to send
//    -r:NAME    The recipients NetBIOS name
//    -b         Use broadcast datagrams
//    -a         Receive datagrams for any NetBIOS name
//    -l:xxx     Send datagrams on LANA number xxx only
//    -d:xxx     Delay (in milliseconds) between sends
//    
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

#include "..\Common\nbcommon.h"

#define MAX_SESSIONS            254
#define MAX_NAMES               254
#define MAX_DATAGRAM_SIZE       512

BOOL   bSender = FALSE,               // Send or receive datagrams
       bRecvAny = FALSE,              // Receive for any name
       bUniqueName = TRUE,            // Register my name as unique?
       bBroadcast = FALSE,            // Use broadcast datagrams?
       bOneLana = FALSE;              // Use all LANAs or just one?
char   szLocalName[NCBNAMSZ + 1],     // Local NetBIOS name
       szRecipientName[NCBNAMSZ + 1]; // Recipients NetBIOS name
DWORD  dwNumDatagrams = 25,           // Number of datagrams to sen
       dwOneLana,                     // If using one LANA, which one
       dwDelay = 0;                   // Delay between datagram send

//
// Function: ValidateArgs
//
// Description:
//    This function parses the command line arguments
//    and sets various global flags indicating the selections.
//
void ValidateArgs(int argc, char **argv)
{
    int                i;

    for(i = 1; i < argc; i++)
    {
        if (strlen(argv[i]) < 2)
            continue;
        if ((argv[i][0] == '-') || (argv[i][0] == '/'))
        {
            switch (tolower(argv[i][1]))
            {
                case 'n':        // Use a unique name
                    bUniqueName = TRUE;
                    if (strlen(argv[i]) > 2)
                        strcpy(szLocalName, &argv[i][3]);
                    break;
                case 'g':        // Use a group name
                    bUniqueName = FALSE;
                    if (strlen(argv[i]) > 2)
                        strcpy(szLocalName, &argv[i][3]);
                    break;
                case 's':        // Send datagrams
                    bSender = TRUE;
                    break;
                case 'c':        // Num datagrams to send or receive
                    if (strlen(argv[i]) > 2)
                        dwNumDatagrams = atoi(&argv[i][3]);
                    break;
                case 'r':        // Recipient's name for datagrams
                    if (strlen(argv[i]) > 2)
                        strcpy(szRecipientName, &argv[i][3]);
                    break;
                case 'b':        // Use broadcast datagrams
                    bBroadcast = TRUE;
                    break;
                case 'a':        // Receive datagrams on any name
                    bRecvAny = TRUE;
                    break;
                case 'l':        // Operate on this LANA only
                    bOneLana = TRUE;
                    if (strlen(argv[i]) > 2)
                        dwOneLana = atoi(&argv[i][3]);
                    break;
                case 'd':        // Delay (millisecs) between sends
                    if (strlen(argv[i]) > 2)
                        dwDelay = atoi(&argv[i][3]);
                    break;
                default:
                    printf("usage: nbdgram ?\n");
                    break;
             }
        }
    }
    return;
}

//
// Function: DatagramSend
//
// Description:
//    Send a directed datagram to the specified recipient on the 
//    specified LANA number from the given name number to the
//    specified recipient. Also specified is the data buffer and 
//    the number of bytes to send.
//
int DatagramSend(int lana, int num, char *recipient, 
				 char *buffer, int buflen)
{
    NCB                ncb;

    ZeroMemory(&ncb, sizeof(NCB));
    ncb.ncb_command = NCBDGSEND;
    ncb.ncb_lana_num = lana;
    ncb.ncb_num = num;
    ncb.ncb_buffer = (PUCHAR)buffer;
    ncb.ncb_length = buflen;

    memset(ncb.ncb_callname, ' ', NCBNAMSZ);
    strncpy(ncb.ncb_callname, recipient, strlen(recipient));

    if (Netbios(&ncb) != NRC_GOODRET)
    {
        printf("Netbios: NCBDGSEND failed: %d\n", ncb.ncb_retcode);
        return ncb.ncb_retcode;
    }
    return NRC_GOODRET;
}

//
// Function: DatagramSendBC
//
// Description:
//    Send a broadcast datagram on the specified LANA number from the 
//    given name number.  Also specified is the data buffer and number
//    of bytes to send.
//
int DatagramSendBC(int lana, int num, char *buffer, int buflen)
{
    NCB                ncb;

    ZeroMemory(&ncb, sizeof(NCB));
    ncb.ncb_command = NCBDGSENDBC;
    ncb.ncb_lana_num = lana;
    ncb.ncb_num = num;
    ncb.ncb_buffer = (PUCHAR)buffer;
    ncb.ncb_length = buflen;

    if (Netbios(&ncb) != NRC_GOODRET)
    {
        printf("Netbios: NCBDGSENDBC failed: %d\n", ncb.ncb_retcode);
        return ncb.ncb_retcode;
    }
    return NRC_GOODRET;
}

//
// Function: DatagramRecv
//
// Description:
//    Receive a datagram on the given LANA number directed towards the
//    name represented by num.  Data is copied into the supplied buffer.
//    If hEvent is not zero then the receive call is made asynchronously
//    with the supplied event handle. If num is 0xFF then listen for a
//    datagram destined for any NetBIOS name registered by the process.
//
int DatagramRecv(PNCB pncb, int lana, int num, char *buffer, 
                 int buflen, HANDLE hEvent)
{
    ZeroMemory(pncb, sizeof(NCB));
    if (hEvent)
    {
        pncb->ncb_command = NCBDGRECV | ASYNCH;
        pncb->ncb_event = hEvent;
    }
    else
        pncb->ncb_command = NCBDGRECV;
    pncb->ncb_lana_num = lana;
    pncb->ncb_num = num;
    pncb->ncb_buffer = (PUCHAR)buffer;
    pncb->ncb_length = buflen;

    if (Netbios(pncb) != NRC_GOODRET)
    {
        printf("Netbos: NCBDGRECV failed: %d\n", pncb->ncb_retcode);
        return pncb->ncb_retcode;
    }
    return NRC_GOODRET;
}

//
// Function: DatagramRecvBC
//
// Description:
//    Receive a broadcast datagram on the given LANA number.
//    Data is copied into the supplied buffer.  If hEvent is not zero 
//    then the receive call is made asynchronously with the supplied 
//    event handle.
//
int DatagramRecvBC(PNCB pncb, int lana, int num, char *buffer, 
                   int buflen, HANDLE hEvent)
{
    ZeroMemory(pncb, sizeof(NCB));
    if (hEvent)
    {
        pncb->ncb_command = NCBDGRECVBC | ASYNCH;
        pncb->ncb_event = hEvent;
    }
    else
        pncb->ncb_command = NCBDGRECVBC;
    pncb->ncb_lana_num = lana;
    pncb->ncb_num = num;
    pncb->ncb_buffer = (PUCHAR)buffer;
    pncb->ncb_length = buflen;
  
    if (Netbios(pncb) != NRC_GOODRET)   
    {
        printf("Netbios: NCBDGRECVBC failed: %d\n", pncb->ncb_retcode);
        return pncb->ncb_retcode;
    }
    return NRC_GOODRET;
}

//
// Function: main
//
// Description:
//    Initialize the NetBIOS interface, allocate resources, and then
//    send or receive datagrams according to the user's options.
//
int main(int argc, char **argv)
{
    LANA_ENUM   lenum;
    int         i, j;
    char        szMessage[MAX_DATAGRAM_SIZE],
                szSender[NCBNAMSZ + 1];
    DWORD      *dwNum = NULL,
                dwBytesRead,
                dwErr;

    ValidateArgs(argc, argv);
    //
    // Enumerate and reset the LANA numbers
    //
    if ((dwErr = LanaEnum(&lenum)) != NRC_GOODRET)
    {
        printf("LanaEnum failed: %d\n", dwErr);
        return 1;
    }
    if ((dwErr = ResetAll(&lenum, (UCHAR)MAX_SESSIONS,
		(UCHAR)MAX_NAMES, FALSE)) != NRC_GOODRET)
    {
        printf("ResetAll failed: %d\n", dwErr);
        return 1;
    }
    //
    // This buffer holds the name number for the NetBIOS name added
    // to each LANA
    //
    dwNum = (DWORD *)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,
            sizeof(DWORD) * lenum.length);
    if (dwNum == NULL)
    {
        printf("out of memory\n");
        return 1;
    }
    //
    // If we're going to operate only on one LANA register the name
    // only on that specified LANA; otherwise register it on all.
    // 
    if (bOneLana)
    {
        if (bUniqueName)
            AddName(dwOneLana, szLocalName, &dwNum[0]);
        else
            AddGroupName(dwOneLana, szLocalName, &dwNum[0]);
    }
    else
    {
        for(i = 0; i < lenum.length; i++)
        {
            if (bUniqueName)
                AddName(lenum.lana[i], szLocalName, &dwNum[i]);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区蜜臀亚洲| 日韩精品一区二区三区中文精品| 亚洲美女屁股眼交| 一本久久综合亚洲鲁鲁五月天| 亚洲色图在线播放| 欧美日韩一区不卡| 亚洲国产精品自拍| 欧美久久久久久久久久 | 95精品视频在线| 亚洲无线码一区二区三区| 制服.丝袜.亚洲.另类.中文| 麻豆91免费观看| 国产精品久久久久永久免费观看 | 中文字幕一区在线观看视频| 91丝袜国产在线播放| 午夜不卡在线视频| 国产欧美精品一区| 欧洲日韩一区二区三区| 日本视频中文字幕一区二区三区| 亚洲精品一区二区三区福利| 久久国产成人午夜av影院| 久久久精品影视| 欧美日韩成人在线| 大白屁股一区二区视频| 亚洲国产日日夜夜| 中国色在线观看另类| 91精品国产综合久久久久| 成人免费视频app| 五月天久久比比资源色| 中文字幕佐山爱一区二区免费| 日韩欧美电影一区| 欧美日韩国产综合草草| 欧美性生活影院| 精品久久久久久久久久久院品网| 成人avav在线| 久久国产精品露脸对白| 亚洲成人动漫一区| 最近日韩中文字幕| 国产精品三级电影| 欧美老女人在线| 99精品国产一区二区三区不卡| 国产综合一区二区| 日韩成人精品在线观看| 午夜视频一区二区三区| 一区二区高清免费观看影视大全| 中文字幕亚洲区| 国产精品蜜臀av| 亚洲欧美综合在线精品| 国产精品久久久久久久久久久免费看 | 伊人色综合久久天天人手人婷| 国产午夜一区二区三区| 久久精品日产第一区二区三区高清版 | 99久久久精品| 国产麻豆午夜三级精品| 久久国产精品区| 老司机精品视频在线| 琪琪久久久久日韩精品| 麻豆久久久久久久| 国产永久精品大片wwwapp| 成人性生交大片免费看视频在线 | 91精品免费在线| 日韩精品一区二区三区视频播放| 日韩精品一区二区三区在线 | 91精品国产综合久久久蜜臀粉嫩| 欧美日韩一区二区三区不卡| 欧美一区二区视频在线观看| 欧美成人高清电影在线| 日韩亚洲欧美在线| 精品国产三级a在线观看| 久久一区二区三区国产精品| 中文字幕高清不卡| 亚洲国产一二三| 狠狠狠色丁香婷婷综合久久五月| 国产成a人亚洲| 欧美久久一区二区| 精品乱码亚洲一区二区不卡| 日本一区二区免费在线| 亚洲一区二区在线视频| 久久精品国产**网站演员| 丁香啪啪综合成人亚洲小说| 日本道精品一区二区三区| 欧美一区二区在线播放| 国产精品久久久一本精品| 日韩高清在线一区| 91浏览器打开| 亚洲精品久久嫩草网站秘色| 亚洲一级二级在线| 福利一区二区在线| 欧美精品在线视频| 国产日韩v精品一区二区| 亚洲小说欧美激情另类| 国产乱国产乱300精品| 欧美日高清视频| 成人欧美一区二区三区白人 | 国产999精品久久久久久绿帽| 日本韩国精品一区二区在线观看| 26uuu成人网一区二区三区| 性做久久久久久久久| 色婷婷av久久久久久久| 国产女同互慰高潮91漫画| 久久国产精品露脸对白| 3atv在线一区二区三区| 亚洲观看高清完整版在线观看| 成人av集中营| 国产精品美女久久福利网站| 国产尤物一区二区| 欧美精品一区二区三区久久久 | 538在线一区二区精品国产| 国产欧美日韩在线观看| 久草在线在线精品观看| 7777精品伊人久久久大香线蕉完整版 | 精品一区二区三区在线观看| 欧美一区二区三区成人| 男男gaygay亚洲| 精品裸体舞一区二区三区| 久久99这里只有精品| 国产日韩一级二级三级| 大白屁股一区二区视频| 亚洲欧美另类小说| 欧美自拍丝袜亚洲| 日韩国产精品久久久久久亚洲| 91精品啪在线观看国产60岁| 青娱乐精品视频在线| 亚洲精品一线二线三线无人区| 激情深爱一区二区| 国产精品国产三级国产三级人妇 | 久久精品一区二区三区不卡| 国产精品一区二区在线看| 国产精品美女久久久久高潮| 91论坛在线播放| 日韩在线一区二区| 日本一区二区免费在线| 色先锋久久av资源部| 蜜臀精品一区二区三区在线观看 | 亚洲男同1069视频| 欧美一区二区久久久| 欧美一区二区三区思思人| 国产精品自产自拍| 1000部国产精品成人观看| 欧美另类高清zo欧美| 成人免费视频caoporn| 亚洲国产日韩一级| 欧美一区在线视频| 99在线精品视频| 美腿丝袜亚洲综合| 夜夜嗨av一区二区三区中文字幕 | 国产日韩视频一区二区三区| 在线观看日产精品| 国产超碰在线一区| 五月天视频一区| 一区二区三区 在线观看视频| 久久午夜色播影院免费高清| 欧美精品久久一区二区三区| 成人午夜在线免费| 国产一区二区美女| 日韩精品色哟哟| 亚洲精品一二三| 国产日产亚洲精品系列| 欧美成人精品高清在线播放| 欧美日韩国产影片| 欧美午夜一区二区| 色综合欧美在线视频区| 国产91精品一区二区麻豆网站 | 国产精品久线观看视频| 91精品国产综合久久小美女| 91福利国产精品| 欧美日韩国产综合一区二区| 亚洲国产精品自拍| 欧美韩国日本一区| 国产欧美视频一区二区| 久久精品一区四区| 国产精品系列在线| 中文字幕免费不卡| 国产精品高潮呻吟久久| 国产精品三级在线观看| 亚洲欧美怡红院| 伊人色综合久久天天| 一区二区三区中文字幕精品精品 | 91国产丝袜在线播放| 91官网在线免费观看| 欧美日韩欧美一区二区| 欧美疯狂性受xxxxx喷水图片| 欧美一区二区三区免费在线看| 欧美无乱码久久久免费午夜一区| 欧洲一区二区三区免费视频| 欧美精品高清视频| 欧美一区二区在线观看| 国产午夜精品一区二区三区嫩草 | 久久久久久一级片| 国产精品久久免费看| 夜夜操天天操亚洲| 久久99精品久久久久久久久久久久| 久久99热这里只有精品| 国产aⅴ精品一区二区三区色成熟| 不卡av在线网| 日韩精品中午字幕| 一区二区三区四区视频精品免费 | 在线观看日韩电影| 亚洲精品一线二线三线无人区| 国产精品久久久久久户外露出|