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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? evnbsvr.c

?? 一個很好的TCP和UDP端口控制的例子!稍加改動
?? C
字號:
// Module Name: Evnbsvr.c
//
// Description:
//    This sample illustrates a NetBIOS server that uses asynchronous
//    events. The server adds its name to each LANA number and posts
//    an asynch listen on each LANA which will trigger an event when
//    a client connection request is made.  The client will be 
//    serviced.
//  
// Compile:
//    cl -o Evnbsvr.exe Evnbsvr.c ..\Common\Nbcommon.obj Netapi32.lib
//
// Command Line Options:
//    NONE - The server's NetBIOS name is hardcoded as the define
//           SERVER_NAME.  Change this value if you wish the server
//           to register itself under a different name.
//
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

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

#define MAX_SESSIONS    254
#define MAX_NAMES       254

#define MAX_BUFFER      2048
#define SERVER_NAME     "TEST-SERVER-1"

NCB    *g_Clients=NULL;        // Global NCB structure for clients

//
// Function: ClientThread
//
// Description:
//    This thread takes the NCB structure of a connected session
//    and waits for incoming data which it then sends back to the
//    client until the session is closed.
//
DWORD WINAPI ClientThread(PVOID lpParam)
{
    PNCB        pncb = (PNCB)lpParam;
    NCB         ncb;
    char        szRecvBuff[MAX_BUFFER],
                szClientName[NCBNAMSZ + 1];
    DWORD       dwBufferLen = MAX_BUFFER,
                dwRetVal = NRC_GOODRET;

    // Send and receive messages until the session is closed
    // 
    FormatNetbiosName(pncb->ncb_callname, szClientName);
    while (1)
    {
        dwBufferLen = MAX_BUFFER;
        dwRetVal = Recv(pncb->ncb_lana_num, pncb->ncb_lsn,
			szRecvBuff, &dwBufferLen);
        if (dwRetVal != NRC_GOODRET)
            break;

        szRecvBuff[dwBufferLen] = 0;
        printf("READ [LANA=%d]: '%s'\n", pncb->ncb_lana_num, 
            szRecvBuff);

        dwRetVal = Send(pncb->ncb_lana_num, pncb->ncb_lsn,
			szRecvBuff, dwBufferLen);
        if (dwRetVal != NRC_GOODRET)
            break;
    }
    printf("Client '%s' on LANA %d disconnected\n", szClientName,
        pncb->ncb_lana_num);
    //
    // If the error returned from a read or write is NRC_SCLOSED then
    // all is well; otherwise some other error occured so hangup the
    // connection from this side.
    //
    if (dwRetVal != NRC_SCLOSED)
    {
        ZeroMemory(&ncb, sizeof(NCB));
        ncb.ncb_command = NCBHANGUP;
        ncb.ncb_lsn = pncb->ncb_lsn;
        ncb.ncb_lana_num = pncb->ncb_lana_num;

        if (Netbios(&ncb) != NRC_GOODRET)
        {
            printf("ERROR: Netbios: NCBHANGUP: %d\n",
				ncb.ncb_retcode);
            GlobalFree(pncb);
            dwRetVal = ncb.ncb_retcode;
        }
    }
    // The NCB structure passed in is dynamically allocated it so 
    // delete it before we go.
    //
    GlobalFree(pncb);
    return NRC_GOODRET; 
}

//
// Function: Listen
//
// Description:
//    Post an asynchronous listen on the given LANA number.
//    The NCB structure passed in already has its ncb_event
//    field set to a valid Windows event handle.
//
int Listen(PNCB pncb, int lana, char *name)
{
    pncb->ncb_command = NCBLISTEN | ASYNCH;
    pncb->ncb_lana_num = lana;
    //
    // This is the name clients will connect to
    //
    memset(pncb->ncb_name, ' ', NCBNAMSZ);
    strncpy(pncb->ncb_name, name, strlen(name));
    //
    // An '*' means we'll accept connections from anyone.
    // You could specify a specific name which means only a
    // client with the specified name will be allowed to connect.
    //
    memset(pncb->ncb_callname, ' ', NCBNAMSZ);
    pncb->ncb_callname[0] = '*';
  
    if (Netbios(pncb) != NRC_GOODRET)
    {
        printf("ERROR: Netbios: NCBLISTEN: %d\n", pncb->ncb_retcode);
        return pncb->ncb_retcode;
    }
    return NRC_GOODRET;
}

//
// Function: main
//
// Description:
//    Initialize the NetBIOS interface, allocate some resources, and
//    post asynchronous listens on each LANA using events. Wait for
//    an event to be triggered, and then handle the client 
//    connection.
//
int main(int argc, char **argv)
{
    PNCB        pncb=NULL;
    HANDLE      hArray[64],
                hThread;
    DWORD       dwHandleCount=0,
                dwRet,
                dwThreadId;
    int         i,
                num;
    LANA_ENUM   lenum;

    // Enumerate all LANAs and reset each one
    //
    if (LanaEnum(&lenum) != NRC_GOODRET)
        return 1;
    if (ResetAll(&lenum, (UCHAR)MAX_SESSIONS, (UCHAR)MAX_NAMES,
            FALSE) != NRC_GOODRET)
        return 1;
    //
    // Allocate an array of NCB structures (one for each LANA)
    // 
    g_Clients = (PNCB)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,
            sizeof(NCB) * lenum.length);
    //
    // Create the events, add the server name to each LANA, and issue
    // the asynchronous listens on each LANA.
    //
    for(i = 0; i < lenum.length; i++)
    {
        hArray[i] = g_Clients[i].ncb_event = CreateEvent(NULL, TRUE, 
            FALSE, NULL);

        AddName(lenum.lana[i], SERVER_NAME, &num);
        Listen(&g_Clients[i], lenum.lana[i], SERVER_NAME);
    }
    while (1)
    {        
        // Wait until a client connects
        //
        dwRet = WaitForMultipleObjects(lenum.length, hArray, FALSE, 
            INFINITE);
        if (dwRet == WAIT_FAILED)
        {
            printf("ERROR: WaitForMultipleObjects: %d\n", 
                GetLastError());
            break;
        }
        // Go through all the NCB structures to see if more that one
        // succeeded.  If ncb_cmd_plt is not NRC_PENDING then there
		// is a client, create a thread and hand off a new NCB
		// structure to the thread.  We need to re-use the original
		// NCB for other client connections.
        //
        for(i = 0; i < lenum.length; i++)
        {
            if (g_Clients[i].ncb_cmd_cplt != NRC_PENDING) 
            {
                pncb = (PNCB)GlobalAlloc(GMEM_FIXED, sizeof(NCB));
                memcpy(pncb, &g_Clients[i], sizeof(NCB));
                pncb->ncb_event = 0;

                hThread = CreateThread(NULL, 0, ClientThread, 
                    (LPVOID)pncb, 0, &dwThreadId);
                CloseHandle(hThread);
                //
                // Reset the handle and post another listen 
                //
                ResetEvent(hArray[i]);
                Listen(&g_Clients[i], lenum.lana[i], SERVER_NAME);
            }
        }
    }
    // Clean up
    //
    for(i = 0; i < lenum.length; i++)
    {
        DelName(lenum.lana[i], SERVER_NAME);
        CloseHandle(hArray[i]);
    }
    GlobalFree(g_Clients);

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产寡妇亲子伦一区二区| 福利电影一区二区三区| 亚洲成av人影院在线观看网| 国产精品丝袜一区| 亚洲宅男天堂在线观看无病毒| 日韩欧美在线影院| 3d成人动漫网站| 精品国产制服丝袜高跟| 日韩午夜在线观看视频| 久久女同互慰一区二区三区| 国产视频一区在线观看| 视频精品一区二区| 国产69精品一区二区亚洲孕妇| 一本一本久久a久久精品综合麻豆| 99国产精品久| 欧美α欧美αv大片| 欧美激情在线一区二区| 一区二区三区日韩精品| 精品在线播放免费| 成人18视频日本| 51精品国自产在线| 亚洲免费资源在线播放| 久久草av在线| 日本韩国欧美一区二区三区| 久久你懂得1024| 日韩高清不卡一区二区| 在线影院国内精品| 国产欧美日韩中文久久| 国产一区三区三区| 欧美一级精品大片| 毛片av一区二区三区| 欧美怡红院视频| 国产精品网站在线| 懂色av一区二区在线播放| 日韩欧美国产精品| 亚洲成av人影院| 91精品婷婷国产综合久久性色| 亚洲日韩欧美一区二区在线| 99re66热这里只有精品3直播| 久久综合九色综合97婷婷女人 | 国产精品乱人伦一区二区| 极品少妇一区二区| 日韩三级高清在线| 国产一区二区三区高清播放| 26uuu另类欧美亚洲曰本| 成人三级伦理片| 亚洲免费观看高清完整版在线观看 | 最新中文字幕一区二区三区| 国产白丝网站精品污在线入口| 日韩欧美精品在线| 国产一区二三区好的| 日韩一区二区视频在线观看| 韩国精品免费视频| 综合av第一页| 欧美日韩mp4| 免费日本视频一区| 中文字幕中文字幕一区二区| 色综合久久久久综合体| 日日夜夜精品视频免费| 日韩免费看的电影| a美女胸又www黄视频久久| 一区二区欧美精品| 国产午夜精品福利| 欧美日韩国产片| 国产盗摄一区二区三区| 一区二区三区 在线观看视频| 欧美日韩国产综合一区二区 | 久久久久久久久久久久久女国产乱| 国产成人免费网站| 丝袜诱惑制服诱惑色一区在线观看| 亚洲精品一区二区三区在线观看| 成人动漫一区二区三区| 美女网站在线免费欧美精品| 国产精品不卡视频| 中文字幕欧美一区| xnxx国产精品| www激情久久| 精品久久久久久久久久久久久久久| 在线观看91视频| 99久久国产综合精品色伊| 粉嫩aⅴ一区二区三区四区五区| 看国产成人h片视频| 日本不卡一二三区黄网| 男女激情视频一区| 日日夜夜一区二区| 看电视剧不卡顿的网站| 久久爱www久久做| 99久久精品免费看国产| 99久久久精品免费观看国产蜜| 粉嫩嫩av羞羞动漫久久久| 岛国av在线一区| 欧美综合一区二区| 欧美女孩性生活视频| 91麻豆精品国产91久久久使用方法| 欧美精品日韩精品| 久久免费视频色| 欧美国产精品一区二区三区| 亚洲天堂av老司机| 蜜臀久久久久久久| 不卡av在线免费观看| av在线不卡免费看| 337p亚洲精品色噜噜噜| 国产日产欧美一区二区视频| 亚洲在线视频网站| 久久不见久久见免费视频1| 风间由美性色一区二区三区| 欧美性videosxxxxx| 久久精品日产第一区二区三区高清版 | 亚洲一区电影777| 轻轻草成人在线| 色老汉一区二区三区| 久久久久久久久久久久久久久99 | 欧美伊人久久久久久久久影院 | 亚洲免费在线看| 国产综合久久久久影院| 欧美性大战xxxxx久久久| 国产欧美日韩在线视频| 男女男精品网站| 欧美一区二区视频观看视频| 亚洲色图在线看| 99精品视频在线观看| 国产亚洲精久久久久久| 国产一区福利在线| 久久久电影一区二区三区| 日韩精品成人一区二区在线| 欧美午夜视频网站| 亚洲国产综合91精品麻豆| 一本久久综合亚洲鲁鲁五月天| 精品毛片乱码1区2区3区| 日韩中文字幕区一区有砖一区| 欧美精品日韩精品| 美脚の诱脚舐め脚责91 | 久久国产麻豆精品| 亚洲精品在线观看网站| 国产麻豆精品95视频| 精品成a人在线观看| 国产乱理伦片在线观看夜一区| 亚洲国产精品高清| 色综合天天综合网天天看片| 最新久久zyz资源站| 欧美精品免费视频| 国产91精品久久久久久久网曝门| 中文字幕欧美激情| 欧美一区中文字幕| 成人黄页在线观看| 男男gaygay亚洲| 中文字幕免费不卡| 日韩一级精品视频在线观看| 粉嫩久久99精品久久久久久夜| 国产精品沙发午睡系列990531| 色婷婷综合视频在线观看| 精品一区二区久久| 亚洲va欧美va人人爽午夜| 久久精品一区二区三区四区| 一本色道亚洲精品aⅴ| 国产一区二区三区在线观看免费| 亚洲人成小说网站色在线| 日韩一区二区三区三四区视频在线观看 | 另类小说视频一区二区| 一区二区三区日韩精品| 国产亚洲精品aa| 欧美一区二区三区在线| 精品视频一区 二区 三区| 成人精品在线视频观看| 成人性视频网站| 国产一区不卡视频| 亚洲成av人片| 日韩精品午夜视频| 亚洲成人激情综合网| 亚洲一区二区三区视频在线播放 | 欧美高清精品3d| 欧美高清你懂得| 欧美调教femdomvk| 在线不卡欧美精品一区二区三区| 欧美无砖专区一中文字| 91精品国产乱| 久久亚洲精华国产精华液 | 制服.丝袜.亚洲.另类.中文 | 一区二区三区四区亚洲| 亚洲综合在线电影| 美女网站视频久久| 成人午夜在线播放| 91成人看片片| 亚洲精品一线二线三线无人区| 久久精品无码一区二区三区| 亚洲欧美电影一区二区| 日韩高清不卡一区二区三区| 久久精品国产秦先生| 91在线无精精品入口| 欧美一区二区啪啪| 亚洲色图视频网站| 久久99在线观看| 一本一道波多野结衣一区二区 | 国产一区二区三区美女| 97精品电影院| 日韩一区二区影院| 亚洲综合视频网| 成人app在线| 中文字幕国产一区二区| 久久99久久久久|