📄 echo.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
/*
struct message{
int name;
char msg[10];
}message2;*/
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 SendechoMessage(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);
}
UCHAR RecvMessage(PNCB pncb,UCHAR Num,UCHAR *pBuffer,WORD Length,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=Length;
Netbios(pncb);
return(pncb->ncb_cmd_cplt);
}
void main()
{
NCB ServerNcb;
CHAR ServerName[16];
UCHAR ServerNameNum;
UCHAR buff[512];
LANA_ENUM lenum;
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,"swandive1");
if((AddName(ServerName,lenum.lana[0],&ServerNameNum)))
{
printf("AddName Error!\n");
return;
}
printf("Just a wait!\n");
UCHAR p[30];
UCHAR w[17]="echo!-";
UCHAR z[10]="welcome: ";
for(;;)
{
memset(buff,0,512);
printf("wait for time request...\n");
if(RecvMessage(&ServerNcb,ServerNameNum,(UCHAR *)p,sizeof(p),lenum.lana[0])!=NRC_GOODRET)
{
printf("Wait Error!\n");
return;
}
if(ServerNcb.ncb_cmd_cplt==0)
{
int count=0;
for(int i=0;i<sizeof(p);i++)
if(p[i]<=122&&p[i]>=65)
count++;
int t=p[count];
for(int j=0;j<count;j++)
w[j+6]=p[j];
for(int x=0;x<9;x++)
w[count+6+x]=z[x];
w[count+15]=(UCHAR)t;
w[count+16]='\0';
strcpy((char *)p,(const char*)w);
printf("%s\n",p);
printf("%d\n",p[count+15]);
if(SendechoMessage(&ServerNcb,ServerNameNum,(UCHAR *)p,sizeof(p),lenum.lana[0])!=NRC_GOODRET)
{
printf("SendEchoMessage Error!\n");
return;
}
printf("SendEchoMessage ok!\n");
printf("OK\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -