freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第2章基于netbios的網(wǎng)絡(luò)編程(編輯修改稿)

2025-01-29 16:20 本頁面
 

【文章內(nèi)容簡介】 ame(CHAR * Name, UCHAR Lana,UCHAR *NameNum) ? { ? NCB ncb。 ? memset(ncb,0,sizeof(NCB))。 ? =NCBADDGRNAME。 ? =Lana。 ? strcpy((char * ),Name)。 ? Netbios(ncb)。 ? * NameNum=。 ? return()。 ? } ? UCHAR DeleteName(CHAR * Name, UCHAR Lana) ? { ? NCB ncb。 ? memset(ncb,0,sizeof(NCB))。 ? =NCBDELNAME。 ? =Lana。 ? strcpy((char * ),Name)。 ? Netbios(ncb)。 ? return()。 ? } 加名字與刪除名字程序示例 加名字與刪除名字程序示例(續(xù)) 數(shù)據(jù)報通信程序設(shè)計 數(shù)據(jù)報 ( Datagram) 是一種 “ 非面向連接 ”的通信方式 。 作為發(fā)送方 , 只需指定接收方的NetBIOS名字作為目標(biāo)地址便可實現(xiàn)數(shù)據(jù)報發(fā)送 , 此時 , NetBIOS不會執(zhí)行任何檢查 , 不能確保數(shù)據(jù)的完整性 、 抵達(dá)順序或者傳輸?shù)目煽啃缘鹊?。 ? 數(shù)據(jù)報發(fā)送共有三種方式: 1. 將數(shù)據(jù)報發(fā)送到一個特定的唯一名,則只有注冊了該名字的那個進(jìn)程才有權(quán)接收 2. 將數(shù)據(jù)報發(fā)給一個組名,則只有注冊了該組名的那些進(jìn)程才有權(quán)接收 3. 將數(shù)據(jù)報廣播到整個網(wǎng)絡(luò),局域網(wǎng)內(nèi)任何一個工作站上的任何進(jìn)程都有權(quán)接收這個數(shù)據(jù)報消息 ? 數(shù)據(jù)報的接收對應(yīng)也有三種方式。 1. 前兩種要用特定的本地名字來接收,若有指定發(fā)送方名字,則只接收這個名字發(fā)來的數(shù)據(jù),反之則無論誰發(fā)來的數(shù)據(jù)都接收。 2. 對于第三種,不用指定任何本地名字號。 基于 NetBIOS的數(shù)據(jù)報通信的基本模型 客戶機(jī) A 客戶機(jī) B ResetNcb() AddName() Send() DeleteName() ResetNcb() AddName() Recv() DeleteName() 發(fā)送數(shù)據(jù)報到客戶機(jī) B Recv() Send() 發(fā)送數(shù)據(jù)報到客戶機(jī) A 點對點數(shù)據(jù)報通信程序 點對點通信是數(shù)據(jù)報通信程序的一種簡單應(yīng)用。發(fā)送方使用 NCBDGSEND命令發(fā)送數(shù)據(jù)報,接收方使用 NCBDGRECV命令接收數(shù)據(jù)。 通常情況下,數(shù)據(jù)報發(fā)送采用同步(等待)方式,而數(shù)據(jù)報接收則采用異步(非等待)方式,發(fā)送和接收的數(shù)據(jù)報最大長度為 512字節(jié),多余部分將會被丟棄。 數(shù)據(jù)報發(fā)送函數(shù) DatagramSend() NCB輸入: ncb_mand = NCBDGSEND ncb_num: 本地名字號 ( 發(fā)送方為自己注冊的名字編號 ) ncb_callname: 接收方的 NetBIOS名字 ncb_buffer: 指向發(fā)送緩沖區(qū)的指針 ncb_length: 發(fā)送緩沖區(qū)的長度 ( 1~ 512字節(jié) ) NCB輸出: ncb_cmd_cplt: 命令的最終返回碼 , 成功為 NRC_GOODRET ? void DatagramSend(PNCB pncb,UCHAR * DestName,UCHAR Num, UCHAR * pBuffer,WORD Length) ? { ? memset(pncb,0,sizeof(NCB))。 ? pncbncb_mand=NCBDGSEND。 ? strcpy((char *)pncbncb_callname,(char * )DestName)。 ? pncbncb_num=Num。 ? pncbncb_buffer=pBuffer。 ? pncbncb_length=Length。 ? Netbios(pncb)。 ? } 數(shù)據(jù)報接收函數(shù) DatagramRecv() NCB輸入: ncb_mand = NCBDGRECV|ASYNCH ncb_num: 本地名字號 ( 接收方為自己注冊的名字編號 ) ncb_callname: 發(fā)送方的 NetBIOS名字 ncb_buffer: 指向接收緩沖區(qū)的指針 ncb_length: 接收緩沖區(qū)的長度 ( 1~ 512字節(jié) ) ncb_event: 指定異步命令完成后需觸發(fā)的事件句柄,同步命令為“空” NCB輸出: ncb_cmd_cplt: 命令的最終返回碼 , 成功為 NRC_GOODRET ? void DatagramRecv(PNCB pncb,UCHAR * Name,UCHAR Num, HANDLE hEvent,UCHAR * Buff) ? { ? memset(pncb,0,sizeof(NCB))。 ? pncbncb_mand=NCBDGRECV|ASYNCH。 ? strcpy((char *)pncbncb_callname,(char * )Name)。 ? pncbncb_num=Num。 ? pncbncb_buffer=Buff。 ? pncbncb_length=512。 ? pncbncb_cmd_cplt=0xff。 ? pncbncb_event=hEvent。 ? Netbios(pncb)。 ? } ? ( 1)創(chuàng)建事件 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEvent,//安全屬性 BOOL bManuaReset,//是否人工重置 BOOL bInitialState, //初始是否有信號狀態(tài) LPCTSTR lpName //名字 ) DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds) hHandle:同步對象句柄 dwMilliseconds:以毫秒為單位的超時間隔 ? hEvent=CreateEvent(NULL,FALSE,FALSE,NULL)。 ? if(hEvent==NULL) ? return。 ?…. ? DatagramRecv(RecvNcb,(UCHAR *)RemoteName,LocalNameNum,hEvent,buff)。 ? WaitForSingleObject(hEvent,0xffffffff)。 簡單數(shù)據(jù)報通信程序示例 發(fā)送方“ abc”不斷給接收方“ xyz”發(fā)送數(shù)據(jù)(數(shù)據(jù)內(nèi)容由用戶指定),雙方直到收到一條“ exit”消息后停止通信。 數(shù)據(jù)報發(fā)送程序 數(shù)據(jù)報接收程序 程序說明 發(fā)送方程序采用循環(huán)發(fā)送結(jié)構(gòu),接收方程序采用循環(huán)接收結(jié)構(gòu)。當(dāng)發(fā)送方從鍵盤上鍵入一個字符串后,發(fā)送程序?qū)⒃撟址鳛閿?shù)據(jù)報直接發(fā)送給接收方,接收方在收到一個數(shù)據(jù)報后,將收到的字符串顯示在屏幕上,如果發(fā)送方鍵入的是“ exit”, 則通信雙方結(jié)束通信,程序退出。 接收方程序用到了兩個 Windows API函數(shù):創(chuàng)建事件函數(shù) CreateEvent()和等待事件函數(shù) WaitForSingleObject(),利用這兩個函數(shù)的目的是用來配合處理異步接收命令。 組播與廣播通信程序 ?組播通信程序設(shè)計: 組播通信與點對點通信程序的結(jié)構(gòu)類似,所用的發(fā)送和接收命令也相同,只是發(fā)送方在指定接受方的名字時應(yīng)設(shè)置為特定的遠(yuǎn)程組名,而多個接收方均應(yīng)使用相同的組名來設(shè)置接收。這樣,只要發(fā)送方發(fā)送一個特定的組播數(shù)據(jù)報,那些以特定組名等待接收的進(jìn)程均能同時接收到這個組播數(shù)據(jù)報。 課堂練習(xí)作業(yè) 1:擬寫程序?qū)崿F(xiàn)組播通信。 ?發(fā)送方 接收工作組 ResetNcb() AddName() Send() DeleteName() ResetNcb() AddGRName() Recv() DeleteName() 發(fā)送數(shù)據(jù)報到工作組 作業(yè)一 ?P56頁 ? ? ?廣播通信程序設(shè)計: 廣播通信與組播通信略有不同,主要差別在于: 1. 廣播發(fā)送與接收應(yīng)采用特定的廣播命令,廣播發(fā)送用 NCBDGSENDBC命令,而廣播接收用 NCBDGRECVBC命令
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1