?? timerecv.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(UCHAR *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 DatagramSend(PNCB pncb,UCHAR DestName[],UCHAR Num,UCHAR *pBuffer,WORD Length,UCHAR Lana)
{
memset(pncb,0,sizeof(NCB));
pncb->ncb_command=NCBDGSEND;
strcpy((char *)pncb->ncb_callname,(const char *)DestName);
pncb->ncb_lana_num=Lana;
pncb->ncb_num=Num;
pncb->ncb_buffer=pBuffer;
pncb->ncb_length=Length;
// pncb->ncb_cmd_cplt=0xff;
Netbios(pncb);
return(pncb->ncb_cmd_cplt);
}
UCHAR RecvBaseTime(PNCB pncb,UCHAR Num,UCHAR *pBuffer,UCHAR Lana)
{
memset(pncb,0,sizeof(NCB));
pncb->ncb_command=NCBDGRECVBC;
pncb->ncb_lana_num=Lana;
pncb->ncb_num=Num;
pncb->ncb_buffer=pBuffer;
pncb->ncb_length=512;
// pncb->ncb_cmd_cplt=0xff;
Netbios(pncb);
return(pncb->ncb_cmd_cplt);
}
void main()
{
NCB ClientNcb;
UCHAR LocalName[16],RemoteName[16];
UCHAR LocalNameNum;
UCHAR buff[512];
LANA_ENUM lenum;
LPSYSTEMTIME lpSystemTime;
strcpy((char *)LocalName,"swandive");
strcpy((char *)RemoteName,"TimeServer");
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");
if(AddName(LocalName,lenum.lana[0],&LocalNameNum)!=NRC_GOODRET)
{
printf("AddName Error!\n");
return;
}
printf("AddName OK!\n");
if(DatagramSend(&ClientNcb,RemoteName,LocalNameNum,buff,11,lenum.lana[0])!=NRC_GOODRET)
{
printf("Send Error!\n");
}
printf("Send OK!\n");
for(;;)
{
if(RecvBaseTime(&ClientNcb,LocalNameNum,buff,lenum.lana[0])!=NRC_GOODRET)
{
printf("RecvBaseTime Error!\n");
return;
}
printf("RecvBaseTime ok!\n");
if(ClientNcb.ncb_cmd_cplt==0)
{
lpSystemTime=(LPSYSTEMTIME)buff;
SetSystemTime(lpSystemTime);
printf(" Time OK!\nToday is ");
printf("%d-%d-%d",lpSystemTime->wYear,lpSystemTime->wMonth,lpSystemTime->wDay);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -