📄 timesend.cpp
字号:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <nb30.h>
#pragma comment(lib,"netapi32.lib")
#define MAXSESSIONS 2
#define MAXNAMES 4
UCHAR LanaEnum(LANA_ENUM *lenum)
{
NCB ncb;
UCHAR ucRc;
memset(&ncb,0,sizeof(NCB));
ncb.ncb_command=NCBENUM;
ncb.ncb_buffer=(PUCHAR)lenum;
ncb.ncb_length=sizeof(LANA_ENUM);
ucRc=Netbios(&ncb);
return(ucRc);
}
UCHAR RestNCB(UCHAR lana)
{
NCB ncb;
UCHAR ucRc;
memset(&ncb,0,sizeof(NCB));
ncb.ncb_command=NCBRESET;
ncb.ncb_callname[0]=MAXSESSIONS;
ncb.ncb_callname[2]=MAXNAMES;
// ncb.ncb_callname[3]=TRUE;
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,(const char*)Name);
Netbios(&ncb);
*NameNum=ncb.ncb_num;
return(ncb.ncb_cmd_cplt);
}
UCHAR DeleteName(UCHAR *Name,UCHAR Lana)
{
NCB ncb;
memset(&ncb,0,sizeof(NCB));
ncb.ncb_command=NCBDELNAME;
ncb.ncb_lana_num=Lana;
strcpy((char*)ncb.ncb_name,(const char*)Name);
Netbios(&ncb);
return(ncb.ncb_cmd_cplt);
}
UCHAR WaitTimeRequest(PNCB pncb,UCHAR Num,UCHAR *pBuffer,UCHAR Lana)
{
memset(pncb,0,sizeof(NCB));
pncb->ncb_command=NCBDGRECV;
pncb->ncb_lana_num=Lana;
pncb->ncb_num=Num;
pncb->ncb_buffer=pBuffer;
pncb->ncb_length=512;
Netbios(pncb);
return(pncb->ncb_cmd_cplt);
}
UCHAR SendBaseTime(PNCB pncb,UCHAR Num,UCHAR *pBuffer,WORD Length,UCHAR Lana)
{
memset(pncb,0,sizeof(NCB));
pncb->ncb_command=NCBDGSENDBC;
pncb->ncb_lana_num=Lana;
pncb->ncb_num=Num;
pncb->ncb_buffer=pBuffer;
pncb->ncb_length=Length;
Netbios(pncb);
return(pncb->ncb_cmd_cplt);
}
void main()
{
NCB ServerNcb;
CHAR ServerName[16];
UCHAR ServerNameNum;
UCHAR buff[512];
LANA_ENUM lenum;
LPSYSTEMTIME lpSystemTime;
SYSTEMTIME time;
lpSystemTime=&time;
if(LanaEnum(&lenum)!=NRC_GOODRET)
{
printf("lanaEnum Error!\n");
return;
}
printf("LanaEnum OK!\n");
if(RestNCB(lenum.lana[0])!=NRC_GOODRET)
{
printf("RestNCB Error!\n");
return;
}
printf("RestNCB OK!\n");
strcpy(ServerName,"TimeServer");
if((AddName(ServerName,lenum.lana[0],&ServerNameNum)))
{
printf("%d",ServerNcb.ncb_cmd_cplt);
printf("AddName Error!\n");
return;
}
printf("AddName OK\n");
for(;;)
{
memset(buff,0,512);
printf("wait for time request...\n");
if(WaitTimeRequest(&ServerNcb,ServerNameNum,buff,lenum.lana[0])!=NRC_GOODRET)
{
printf("Wait Error!\n");
return;
}
printf("Wait OK!\n");
if(ServerNcb.ncb_cmd_cplt==0)
{
GetSystemTime(lpSystemTime);
if(SendBaseTime(&ServerNcb,ServerNameNum,(UCHAR *)lpSystemTime,sizeof(SYSTEMTIME),lenum.lana[0])!=NRC_GOODRET)
{
printf("SendBaseTime Error!\n");
return;
}
printf("SendBaseTime ok!\n");
printf("OK\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -