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

正文內(nèi)容

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

2025-01-29 16:20 本頁(yè)面
 

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