📄 nbview.c
字号:
case HANG_UP:
gotoxy(1,5);
cprintf("Session Closed.");
break;
case RECEIVE_DATAGRAM:
case RECEIVE_BC_DATAGRAM:
gotoxy(1,5);
cprintf("Remote Machine Name:");
printf(temp_ncb.NCB_CALLNAME);
gotoxy(1,6);
cprintf("Message Says:");
for(i=0,j=7;i<temp_ncb.NCB_LENGTH;i++)
{
if(i%60==0) gotoxy(1,j++);
cprintf("%c",message_in[i]);
}
break;
}
report_exit:
gotoxy(23,19);
cprintf("(Press a key)");
bioskey(0);
window(1,1,80,25);
gotoxy(cursor_x,cursor_y);
puttext(1,1,80,25,screen_save);
}
/*------------------------------------------------------------*/
void interrupt post(void)
{
es_reg=_ES;
bx_reg=_BX;
ncb_segments[ncb_head]=es_reg;
ncb_offsets[ncb_head]=bx_reg;
ncb_head++;
if(ncb_head==10) ncb_head=0;
}
/*------------------------------------------------------------*/
void main()
{
int_5C_Vector=getvect(0x5C);
if(int_5C_Vector==(void far *)NULL)
{
printf("NetBios not loaded (Int5C not present).");
exit(0);
}
memset(&temp_ncb,0,sizeof(NCB));
temp_ncb.NCB_COMMAND=0x7F;
NetBios(&temp_ncb);
if(temp_ncb.NCB_RETCODE!=03)
{
printf("NetBios not loaded (No response fron Int5C)".);
exit(0)
}
show_menu:
clrscr();
choice=0;
printf(" NETBIOS_VIEW Menu: \n");
printf("--------------------------\n");
printf(" 0 ... Exit\n");
printf(" 1 ... Reset adapter\n");
printf(" 2 ... Adapter status\n");
printf(" 3 ... Add name\n");
printf(" 4 ... Add group name\n");
printf(" 5 ... Delete name\n");
printf(" 6 ... Call\n");
printf(" 7 ... Listen\n");
printf(" 8 ... Send\n");
printf(" 9 ... Receive\n");
printf("10 ... Receive any\n");
printf("11 ... Hang up\n");
printf("12 ... Session status\n");
printf("13 ... Send datagram\n");
printf("14 ... receive datagram\n");
printf("15 ... Send broadcast datagram\n");
printf("16 ... receive broadcast datagram\n");
printf("--------------------------\n");
printf("Your Choice: \n");
get_choice:
if(ncb_head!=ncb_tail) report_result();
if(!bioskey(1)) goto get_choice;
gets(string);
printf("\n");
if(strlen(string)==0) goto show_menu;
choice=atoi(string);
if(choice<0 || choice>16) goto show_menu;
switch(choice)
{
case 0:
printf("Exiting...\n"); exit(0);
case 1:
printf("Are you sure (Y/N)?");
gets(string);
strlwr(string);
if(string[0]!='y') break;
printf("Resetting Adapter...\n");
memset(&reset_ncb,0,sizeof(NCB));
reset_ncb.NCB_COMMAND=RESET;
NetBios(&reset_ncb);
printf("Return Code=%d. (press a key)",\
(int)reset_ncb.NCB_RETCODE);
bioskey(0);
break;
case 2:
printf("GET ADAPTER STATUS--Enter name of adapter:");
gets(remotename);
if(strlen(remotename)==0) break;
expand_to_16_chars(remotename);
memset(&adapter_status_ncb,0,sizeof(NCB));
adapter_status_ncb.NCB_COMMAND=ADAPTER_STATUS;
adapter_status_ncb.POST_FUNC=post;
strcpy(adapter_status_ncb.NCB_CALLNAME,remotename);
adapter_status_ncb.NCB_BUFFER_PTR=(void far *)(&adapter_data);
adapter_status_ncb.NCB_LENGTH=sizeof(ADAPTER_DATA);
memset(&adapter_data,0,sizeof(ADAPTER_DATA));
NetBios(&adapter_status_ncb);
break;
case 3:
printf("ADD NAME--Enter name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(localname);
memset(&add_name_ncb,0,sizeof(NCB));
add_name_ncb.NCB_COMMAND=ADD_NAME;
strcpy(add_name_ncb.NCB_NAME,localname);
add_name_ncb.POST_FUNC=post;
NetBios(&add_name_ncb);
break;
case 4:
printf("ADD GROUP NAME--Enter name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(localname);
memset(&add_group_name_ncb,0,sizeof(NCB));
add_group_name_ncb.NCB_COMMAND=ADD_GROUP_NAME;
strcpy(add_group_name_ncb.NCB_NAME,localname);
add_group_name_ncb.POST_FUNC=post;
NetBios(&add_group_name_ncb);
break;
case 5:
printf("DELETE NAME--Enter name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(localname);
memset(&delete_name_ncb,0,sizeof(NCB));
delete_name_ncb.NCB_COMMAND=DELETE_NAME;
strcpy(delete_name_ncb.NCB_NAME,localname);
delete_name_ncb.POST_FUNC=post;
NetBios(&delete_name_ncb);
break;
case 6:
printf("CALL--Enter remote name to call:");
gets(remotename);
if(strlen(remotename)==0) break;
printf(" Enter local (calling) name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(remotename);
expand_to_16_chars(localname);
memset(&call_ncb,0,sizeof(NCB));
call_ncb.NCB_COMMAND=CALL;
strcpy(call_ncb.NCB_NAME,localname);
strcpy(call_ncb.NCB_CALLNAME,remotename);
call_ncb.NCB_RTO=0;
call_ncb.NCB_STO=0;
call_ncb.POST_FUNC=post;
NetBios(&call_ncb);
break;
case 7:
printf("LISTEN--Enter remote name to listen for:");
gets(remotename);
if(strlen(remotename)==0) break;
printf(" Enter local (listening) name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(remotename);
expand_to_16_chars(localname);
memset(&listen_ncb,0,sizeof(NCB));
listen_ncb.NCB_COMMAND=LISTEN;
strcpy(listen_ncb.NCB_NAME,localname);
strcpy(listen_ncb.NCB_CALLNAME,remotename);
listen_ncb.NCB_RTO=60;
listen_ncb.NCB_STO=0;
listen_ncb.POST_FUNC=post;
NetBios(&listen_ncb);
break;
case 8:
printf("SEND--Enter message to be sent:");
gets(message_out);
if(strlen(message_out)==0) break;
printf(" Enter session number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>254) break;
lsn=(BYTE)x;
memset(&send_ncb,0,sizeof(NCB));
send_ncb.NCB_COMMAND=SEND;
send_ncb.NCB_LSN=lsn;
send_ncb.NCB_LENGTH=strlen(message_out)+1;
send_ncb.NCB_BUFFER_PTR=(void far *)(message_out);
send_ncb.POST_FUNC=post;
NetBios(&send_ncb);
break;
case 9:
printf("RECEIVE--Enter session number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>254) break;
lsn=(BYTE)x;
memset(&receive_ncb,0,sizeof(NCB));
receive_ncb.NCB_COMMAND=RECEIVE;
receive_ncb.NCB_LSN=lsn;
receive_ncb.NCB_LENGTH=MSG_SIZE-1;
receive_ncb.NCB_BUFFER_PTR=(void far *)(message_in);
receive_ncb.POST_FUNC=post;
NetBios(&receive_ncb);
break;
case 10:
printf("RECEIVE ANY--Enter name number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>255) break;
name_number=(BYTE)x;
memset(&receive_any_ncb,0,sizeof(NCB));
receive_any_ncb.NCB_COMMAND=RECEIVE_ANY;
receive_any_ncb.NCB_NUM=name_number;
receive_any_ncb.NCB_LENGTH=MSG_SIZE-1;
receive_any_ncb.NCB_BUFFER_PTR=(void far *)(message_in);
receive_any_ncb.POST_FUNC=post;
NetBios(&receive_any_ncb);
break;
case 11:
printf("HANG UP--Enter session number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>254) break;
lsn=(BYTE)x;
memset(&hangup_any_ncb,0,sizeof(NCB));
hangup_ncb.NCB_COMMAND=HANG_UP;
hangup_ncb.NCB_LSN=lsn;
hangup_ncb.POST_FUNC=post;
NetBios(&hangup_ncb);
break;
case 12:
printf("GET SESSION STATUS--Enter name:");
gets(localname);
if(strlen(localname)==0) break;
expand_to_16_chars(localname);
memset(&session_status_ncb,0,sizeof(NCB));
session_status_ncb.NCB_COMMAND=SESSION_STATUS;
strcpy(session_status_ncb.NCB_NAME,localname);
session_status_ncb.NCB_LENGTH=sizeof(STATUS_INFO);
session_status_ncb.NCB_BUFFER_PTR=(void far *)(&session_info);
strcpy(listen_ncb.NCB_CALLNAME,remotename);
session_status_ncb.POST_FUNC=post;
NetBios(&session_status_ncb);
break;
case 13:
printf("SEND DATAGRAM--Enter message to be sent:");
gets(message_out);
if(strlen(message_out)==0) break;
printf("Enter Remote Name:");
gets(remotename);
if(strlen(remotename)==0) break;
expand_to_16_chars(remotename);
printf("Enter Local Name Num:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>254) break;
name_number=(BYTE)x;
memset(&send_dg_ncb,0,sizeof(NCB));
send_dg_ncb.NCB_COMMAND=SEND_DATAGRAM;
send_dg_ncb.NCB_NUM=name_number;
strcpy(send_dg_ncb.NCB_CALLNAME,remotename);
send_dg_ncb.NCB_LENGTH=strlen(message_out)+1;
send_dg_ncb.NCB_BUFFER_PTR=(void far *)(message_out);
send_dg_ncb.POST_FUNC=post;
NetBios(&send_dg_ncb);
break;
case 14:
printf("RECEIVE DATAGRAM--Enter Local Name Number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>255) break;
name_number=(BYTE)x;
memset(&receive_dg_ncb,0,sizeof(NCB));
receive_dg_ncb.NCB_COMMAND=RECEIVE_DATAGRAM;
receive_dg_ncb.NCB_NUM=name_number;
receive_dg_ncb.NCB_LENGTH=MSG_SIZE-1;
receive_dg_ncb.NCB_BUFFER_PTR=(void far *)(message_in);
receive_dg_ncb.POST_FUNC=post;
NetBios(&receive_dg_ncb);
break;
case 15:
printf("SEND BROADCAST DATAGRAM--Enter message to be sent:");
gets(message_out);
if(strlen(message_out)==0) break;
printf("Enter Local Name Num:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>254) break;
name_number=(BYTE)x;
memset(&send_bcdg_ncb,0,sizeof(NCB));
send_bcdg_ncb.NCB_COMMAND=SEND_BC_DATAGRAM;
send_bcdg_ncb.NCB_NUM=name_number;
send_bcdg_ncb.NCB_LENGTH=strlen(message_out)+1;
send_bcdg_ncb.NCB_BUFFER_PTR=(void far *)(message_out);
send_bcdg_ncb.POST_FUNC=post;
NetBios(&send_bcdg_ncb);
break;
case 16:
printf("RECEIVE BROADCAST DATAGRAM--Enter Local Name Number:");
gets(string);
if(strlen(string)==0) break;
x=atoi(string);
if(x<||x>255) break;
name_number=(BYTE)x;
memset(&receive_bcdg_ncb,0,sizeof(NCB));
receive_bcdg_ncb.NCB_COMMAND=RECEIVE_BC_DATAGRAM;
receive_bcdg_ncb.NCB_NUM=name_number;
receive_bcdg_ncb.NCB_LENGTH=MSG_SIZE-1;
receive_bcdg_ncb.NCB_BUFFER_PTR=(void far *)(message_in);
receive_bcdg_ncb.POST_FUNC=post;
NetBios(&receive_bcdg_ncb);
break;
default: break;
}
goto show_menu;
}
/*------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -