Category : Network Files
Archive   : NBSAMPLE.ZIP
Filename : NBRCV.C

 
Output of file : NBRCV.C contained in archive : NBSAMPLE.ZIP
/* NBRCV.C - sample program - receives NetBIOS broadcast. - */
/* Paul McGinnis - AST Research, 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
#include
#include
#include
#include


main()
{
NCB far * rcv_block;
char far * rcv_message;
char far * session_name;
unsigned char ret_code, net_num, iflag;
rcv_block = (NCB far *) malloc(sizeof(NCB));
rcv_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);
puts("generating network name...");
rcv_block -> NCB_COMMAND = ADD_NAME_WAIT; /* Use default time-out values */
rcv_block -> NCB_LANA_NUM = 0;
rcv_block -> NCB_STO = 0;
rcv_block -> NCB_RTO = 0;
strncpy(rcv_block -> NCB_NAME, session_name, 16); /* Copy name to NCB */
strncpy(rcv_block -> NCB_CALLNAME, "*", 16); /* Check all names on net */
_ES = FP_SEG(rcv_block);
_BX = FP_OFF(rcv_block);
_AX = 0x100;
geninterrupt(0x5c);
ret_code = _AL;
net_num = rcv_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("Waiting for broadcast message...");
rcv_block -> NCB_RTO = 0;
rcv_block -> NCB_BUFFER_OFFSET = FP_OFF(rcv_message);
rcv_block -> NCB_BUFFER_SEGMENT = FP_SEG(rcv_message);
rcv_block -> NCB_LENGTH = 80;
rcv_block -> NCB_COMMAND = RECEIVE_BCST_DATAGRAM_WAIT; /* Wait until rcvd. */
_ES = FP_SEG(rcv_block);
_BX = FP_OFF(rcv_block);
_AX = 0x100;
geninterrupt(0x5c);
ret_code = _AL;
pokeb(FP_SEG(rcv_message), FP_OFF(rcv_message) + rcv_block -> NCB_LENGTH, 0);
if (ret_code)
printf("Error number = %02Xh\n", ret_code);
else
{
printf("%c*** %Fs\n", 7, rcv_message);
printf("From: %Fs\n", rcv_block -> NCB_CALLNAME);
}
printf("Releasing session >>>%Fs<<<, number %02Xh\n",
rcv_block -> NCB_NAME, net_num);
rcv_block -> NCB_NUM = net_num;
rcv_block -> NCB_COMMAND = DELETE_NAME_WAIT; /* Schedule name for removal */
_ES = FP_SEG(rcv_block);
_BX = FP_OFF(rcv_block);
_AX = 0x100;
geninterrupt(0x5c);
ret_code = _AL;
if (ret_code)
printf("Error number = %02Xh.\n", ret_code);
else
puts("Completed normally.");
}


  3 Responses to “Category : Network Files
Archive   : NBSAMPLE.ZIP
Filename : NBRCV.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/