TRADER@cup.portal.com (09/27/88)
/* NBSEND.C - test of NetBIOS- broadcasts a message - Paul McGinnis */ /* AST Research, Inc. - Data Comm Support - Dept. 430 */ /* August 1988. - comments added 9/26/88 */ /* */ /* General calling sequence for NetBIOS calls: */ /* 1. Set up NCB (Network Control Block) */ /* 2. Make ES:BX point to NCB structure */ /* 3. Load AX with 100h */ /* 4. Generate an INT 5Ch */ /* */ /* NetBIOS commands and definitions in NETBIOS.H */ /* */ /* Compilation information: */ /* Compiler: Borland Turbo C v1.5 */ /* Memory model: Small */ /* Floating point support: none */ #include <dos.h> #include <stdio.h> #include <netbios.h> #include <stdlib.h> #include <string.h> main() { NCB far * send_block; char far * send_message; char far * session_name; unsigned char ret_code, net_num, iflag; send_block = (NCB far *) malloc(sizeof(NCB)); send_message = (char far *) malloc(80); session_name = (char far *) malloc(16); _AH = 0; geninterrupt(0x2a); /* Check to see if NetBIOS is loaded */ iflag = _AH; if (!iflag) { puts(" *** ERROR - NetBIOS not installed. ***"); return; } printf("Enter session name: "); gets(session_name); printf("Enter message: "); gets(send_message); puts("generating network name..."); send_block -> NCB_COMMAND = ADD_NAME_WAIT; /* Use default time-out values */ send_block -> NCB_LANA_NUM = 0; send_block -> NCB_STO = 0; send_block -> NCB_RTO = 0; strncpy(send_block -> NCB_NAME, session_name, 16); /* Copy name to NCB */ strncpy(send_block -> NCB_CALLNAME, "*", 16); /* Check all names on net */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; net_num = send_block -> NCB_NUM; if (ret_code) { printf("Bad return code = %02Xh\n", ret_code); return; } printf("Session established. Name number = %02Xh\n", net_num); puts("Broadcasting message..."); send_block -> NCB_STO = 0; send_block -> NCB_BUFFER_OFFSET = FP_OFF(send_message); send_block -> NCB_BUFFER_SEGMENT = FP_SEG(send_message); send_block -> NCB_LENGTH = strlen(send_message); send_block -> NCB_COMMAND = SEND_BCST_DATAGRAM_WAIT; /* Wait for completion */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; if (ret_code) printf("Error number = %02Xh.\n", ret_code); else puts("Message broadcast successfully"); printf("Releasing session >>>%Fs<<<, number %02Xh\n", send_block -> NCB_NAME, net_num); send_block -> NCB_NUM = net_num; send_block -> NCB_COMMAND = DELETE_NAME_WAIT; /* Schedule name for removal */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; if (ret_code) printf("Error number = %02Xh.\n", ret_code); else puts("Completed normally."); }
TRADER@cup.portal.COM (09/27/88)
/* NBSEND.C - test of NetBIOS- broadcasts a message - Paul McGinnis */ /* AST Research, Inc. - Data Comm Support - Dept. 430 */ /* August 1988. - comments added 9/26/88 */ /* */ /* General calling sequence for NetBIOS calls: */ /* 1. Set up NCB (Network Control Block) */ /* 2. Make ES:BX point to NCB structure */ /* 3. Load AX with 100h */ /* 4. Generate an INT 5Ch */ /* */ /* NetBIOS commands and definitions in NETBIOS.H */ /* */ /* Compilation information: */ /* Compiler: Borland Turbo C v1.5 */ /* Memory model: Small */ /* Floating point support: none */ #include <dos.h> #include <stdio.h> #include <netbios.h> #include <stdlib.h> #include <string.h> main() { NCB far * send_block; char far * send_message; char far * session_name; unsigned char ret_code, net_num, iflag; send_block = (NCB far *) malloc(sizeof(NCB)); send_message = (char far *) malloc(80); session_name = (char far *) malloc(16); _AH = 0; geninterrupt(0x2a); /* Check to see if NetBIOS is loaded */ iflag = _AH; if (!iflag) { puts(" *** ERROR - NetBIOS not installed. ***"); return; } printf("Enter session name: "); gets(session_name); printf("Enter message: "); gets(send_message); puts("generating network name..."); send_block -> NCB_COMMAND = ADD_NAME_WAIT; /* Use default time-out values */ send_block -> NCB_LANA_NUM = 0; send_block -> NCB_STO = 0; send_block -> NCB_RTO = 0; strncpy(send_block -> NCB_NAME, session_name, 16); /* Copy name to NCB */ strncpy(send_block -> NCB_CALLNAME, "*", 16); /* Check all names on net */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; net_num = send_block -> NCB_NUM; if (ret_code) { printf("Bad return code = %02Xh\n", ret_code); return; } printf("Session established. Name number = %02Xh\n", net_num); puts("Broadcasting message..."); send_block -> NCB_STO = 0; send_block -> NCB_BUFFER_OFFSET = FP_OFF(send_message); send_block -> NCB_BUFFER_SEGMENT = FP_SEG(send_message); send_block -> NCB_LENGTH = strlen(send_message); send_block -> NCB_COMMAND = SEND_BCST_DATAGRAM_WAIT; /* Wait for completion */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; if (ret_code) printf("Error number = %02Xh.\n", ret_code); else puts("Message broadcast successfully"); printf("Releasing session >>>%Fs<<<, number %02Xh\n", send_block -> NCB_NAME, net_num); send_block -> NCB_NUM = net_num; send_block -> NCB_COMMAND = DELETE_NAME_WAIT; /* Schedule name for removal */ _ES = FP_SEG(send_block); _BX = FP_OFF(send_block); _AX = 0x100; geninterrupt(0x5c); ret_code = _AL; if (ret_code) printf("Error number = %02Xh.\n", ret_code); else puts("Completed normally."); }