- 10
- 0
- 约2.59千字
- 约 5页
- 2018-03-09 发布于河南
- 举报
实验三基于NetBIOS数据报通信程序设计(实验讲义)
实验三 基于NetBIOS数据报通信程序设计
1、[实验目的]
2、[实验内容]
3、[实验仪器设备]
4、
编写源程序:
(程序可参考书上P38~P42)
加文件头#include nb30.h
#pragma comment(lib,netapi32.lib)
或者 设置:
vc里面,菜单 ? Project ? -- ? Settings ? -- ? Link ? ? 里面选择 ? General ? ? 在Object/Library ? Moduless一栏里面添加netapi32.lib
形成目标程序
单击菜单栏的“组建(B)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。
运行程序
单击菜单栏的“组建(B)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。
(2)组播通信程序设计
只需对(1)的程序进行简单修改即可实现,关键是增加组名的注册(程序如下)。
UCHAR AddGroupName(CHAR *Name,UCHAR Lana,UCHAR *NameNum)
{
NCB ncb;
memset(ncb,0,sizeof(NCB));
ncb.ncb_command=NCBADDGRNAME;
ncb.ncb_lana_num=Lana;
strcpy((char *) ncb.ncb_name,Name);
Netbios(ncb);
*NameNum=ncb.ncb_num;
return (ncb.ncb_cmd_cplt);
}
该应用程序的测试请在局域网内的多台主机上实现。
5、[结果记录与分析]#include windows.h
#include stdio.h
#include string.h
#include stdlib.h
#include nb30.h
#pragma comment(lib,netapi32.lib)
UCHAR RestNCB(UCHAR lana)
{
NCB ncb;
UCHAR ucRc;
memset(ncb,0,sizeof(NCB));
ncb.ncb_command=NCBRESET;
ncb.ncb_callname[0]=2;
ncb.ncb_callname[2]=4;
ncb.ncb_lana_num=lana;
ucRc=Netbios(ncb);
return(ucRc);
}
UCHAR AddName(CHAR *Name,UCHAR Lana,UCHAR *NameNum)
{
NCB ncb;
memset(ncb,0,sizeof(NCB));
ncb.ncb_command=NCBADDNAME;
ncb.ncb_lana_num=Lana;
strcpy((char *) ncb.ncb_name,Name);
Netbios(ncb);
*NameNum=ncb.ncb_num;
return (ncb.ncb_cmd_cplt);
}
UCHAR DeleteName(CHAR *Name,UCHAR Lana)
{
NCB ncb;
memset(ncb,0,sizeof(NCB));
ncb.ncb_command=NCBDELNAME;
ncb.ncb_lana_num=Lana;
strcpy((char *)ncb.ncb_name,Name);
Netbios(ncb);
return (ncb.ncb_cmd_cplt);
}
void DatagramSend(PNCB pncb,UCHAR * DestName,UCHAR Num, UCHAR * pBuffer,WORD Length)
{
memset(pncb,0,sizeof(NCB));
pncb-ncb_command=NCBDGSEND;
strcpy((char *)pncb-ncb_callname,(char * )DestName);
pncb-ncb_num=Num;
pncb-ncb_buffer=pBuffer;
pncb-ncb_length=Length;
Netbios(pncb);
}
void main()
{
NCB SendNcb;
CHAR LocalName[16],DestName[16];
UCHAR LocalNameNum;
UCHAR buff[512];
if(RestNCB(0)!=0)
原创力文档

文档评论(0)