|
![]() | 作者: ejdm [ejdm]
![]() |
登录 |
我在学习NetBIOS网络编程,我想求出本机器共有多少LANA编号,尝试编写了以下程序段。可总是不能成功,具体情况如下: #include<windows.h> #include<stdio.h> #include<stdlib.h> #include<nb30.h> #pragma comment(lib,"Netapi32") main() { NCB ncb; LANA_ENUM *lenum; ZeroMemory(&ncb,sizeof(NCB)); ncb.ncb_command=NCBENUM; ncb.ncb_buffer=(PUCHAR)lenum; ncb.ncb_length=sizeof(LANA_ENUM); if (Netbios(&ncb)!=NRC_GOODRET) { printf("ERROR:Netbios:NCBENUM:%d\n",ncb.ncb_retcode); } printf("LANA:%d\n",(*lenum).length); } NetBIOS调用一直不成功啊,这是为什么啊? ZeroMemory(&ncb,sizeof(NCB)); ncb.ncb_buffer=(PUCHAR)lenum; 这二句什么意思啊,我是从书上抄来的,不是很了解其含义,麻烦各位解释一下,谢谢了! |
地主 发表时间: 07/02 10:54 |
![]() | 回复: 286 [unique] ![]() |
登录 |
你原来的程序只有指针,没有实际缓冲区地址,所以出错。改为: NCB ncb; LANA_ENUM lenum; ZeroMemory(&ncb,sizeof(NCB)); ncb.ncb_command=NCBENUM; ncb.ncb_buffer=(PUCHAR)&lenum; lenum.length=5; ncb.ncb_length=sizeof(lenum); ///////////////////////////////// ZeroMemory(&ncb,sizeof(NCB)); 表示把由ncb开始的,长度为sizeof(NCB)的内存清为0. ncb.ncb_buffer=(PUCHAR)&lenum; 表示NCB的缓冲区指向lenum的地址。 NETBIOS编程之前要先初始化。 |
B1层 发表时间: 07/02 13:05 |
![]() | 回复: ejdm [ejdm] ![]() |
登录 |
谢谢286,你说的是对的,程序我已经通过了,以后有不懂的,我还会向你请教的,希望你还能继续帮我哦。谢谢了。 |
B2层 发表时间: 07/02 15:00 |
![]() | 回复: 286 [unique] ![]() |
登录 |
不用客气,大家讨论而已。 |
B3层 发表时间: 07/02 15:25 |
![]() | 回复: ccstudy [ccstudy] ![]() |
登录 |
哪有NetBIOS下载的地址? |
B4层 发表时间: 07/26 20:43 |
![]() | 回复: 286 [unique] ![]() |
登录 |
下载什么? 教程?例程?协议? |
B5层 发表时间: 07/28 09:33 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号