⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nbview.c

📁 NETBIOS C程序源代码 用于网络通信
💻 C
📖 第 1 页 / 共 2 页
字号:
		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 + -