Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <nb30.h>
- #include <stdio.h>
- #include <string.h>
- #define lana 03
- UCHAR ResetAdapter(NCB *blok)
- {
- memset(blok, '\0', sizeof(*blok));
- blok->ncb_command = 0;
- blok->ncb_command = NCBRESET;
- blok->ncb_lana_num = lana;
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR AddNameUni (UCHAR naz[16], NCB *blok)
- {
- memset(blok,'\0', sizeof(*blok));
- memcpy(blok->ncb_name,naz,strlen(naz));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBADDGRNAME;
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR AddNameMulti (UCHAR naz[16], NCB *blok)
- {
- memset(blok,'\0', sizeof(*blok));
- memcpy(blok->ncb_name,naz,strlen(naz));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBADDGRNAME;
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR DeleteName (UCHAR naz[16], NCB *blok)
- {
- memcpy(blok->ncb_name,naz,strlen(naz));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBDELNAME;
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR SendBroadcast(NCB *blok, char buf[50], UCHAR nr_nad)
- {
- memset(blok,'\0',sizeof(*blok));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBDGSENDBC;
- blok->ncb_num = nr_nad;
- blok->ncb_buffer = buf;
- blok->ncb_length = strlen(buf);
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR ReceiveBroadcast(NCB *blok,char buf[50],UCHAR nr_odb)
- {
- UCHAR od_kogo[16];
- memset(blok,'\0',sizeof(*blok));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBDGRECVBC;
- memset(buf,'\0',50);
- blok->ncb_buffer = buf;
- blok->ncb_length = 50;
- blok->ncb_num = nr_odb;
- printf("Oczekuje na datagram broadcastowy... \n");
- Netbios(blok);
- if (blok->ncb_retcode == 0)
- {
- memcpy(od_kogo,blok->ncb_callname,15);
- //printf("Odebrano wiadomosc: ");
- printf("Odebrano wiadomosc od %s : \n",od_kogo);
- printf("%s",buf);
- printf("\n");
- }
- return blok->ncb_retcode;
- }
- UCHAR SendDatagram(NCB *blok, char buf[50], UCHAR odb[16], UCHAR nr_nad)
- {
- memset(blok,'\0',sizeof(*blok));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBDGSEND;
- memcpy(blok->ncb_callname,odb,strlen(odb));
- blok->ncb_num = nr_nad;
- blok->ncb_buffer = buf;
- blok->ncb_length = strlen(buf);
- Netbios(blok);
- return blok->ncb_retcode;
- }
- UCHAR ReceiveDatagram(NCB *blok, char buf[50], UCHAR nr_odb)
- {
- UCHAR od_kogo[16];
- memset(blok,'\0',sizeof(*blok));
- blok->ncb_lana_num = lana;
- blok->ncb_command = NCBDGRECV;
- blok->ncb_num = nr_odb;
- memset(buf,'\0',50);
- blok->ncb_buffer = buf;
- blok->ncb_length = 50;
- printf("Oczekuje na datagram... \n");
- Netbios(blok);
- if (blok->ncb_retcode == 0)
- {
- memcpy(od_kogo,blok->ncb_callname,15);
- printf("Odebrano wiadomosc: ");
- printf("%s",buf);
- printf("\n");
- }
- return blok->ncb_retcode;
- }
- int main(void)
- {
- UCHAR err, nr_nad, odb[16], callnaz[16], nad[16];
- char bufor[50];
- int dlugosc;
- char wyb;
- NCB blok;
- err = ResetAdapter(&blok);
- if (err != NRC_GOODRET)
- {
- printf("Blad resetowania!\n");
- system("pause");
- exit(1);
- }
- printf("Podaj nazwe wezla (max. 15 znakow):");
- scanf("%s", nad);
- printf("Do jakiej transmisji:\n");
- printf("(1) multicast\n");
- printf("(2) uniicast\n");
- scanf("%d", &wyb);
- if (wyb==1) err = AddNameMulti(nad, &blok);
- else
- if (wyb==2) err = AddNameUni(nad, &blok);
- if (err != NRC_GOODRET)
- {
- printf("Blad dodawania nazwy!\n");
- system("pause");
- exit(1);
- }
- else printf("Dodano nazwe wezla\n");
- nr_nad = blok.ncb_num;
- while (wyb!=5){
- printf("\n\nChcesz wyslac(1) datagram\n");
- printf(" odebrac(2) datagram\n");
- //printf(" wyslac(3) datagram broadcastowy\n");
- // printf(" odebrac(4) datagram broadcastowy\n");
- printf(" koniec(5): ");
- scanf("%d", &wyb);
- if (wyb == 1)
- {
- printf("Prosze podac nazwe odbiorcy: ");
- scanf("%s", odb);
- printf("Podaj tesc do przeslania:");
- scanf("%s", bufor);
- err = SendDatagram(&blok, bufor, odb, nr_nad);
- if (err != NRC_GOODRET)
- {
- printf("Niepowodzenie wyslania wiadomosci:\n");
- }
- }
- else if (wyb == 2)
- {
- err = ReceiveDatagram(&blok, bufor, nr_nad);
- if (err != NRC_GOODRET)
- {
- printf("Niepowodzenie odebrania wiadomosci:\n");
- }
- }
- else if (wyb == 3)
- {
- printf("Podaj tesc do przeslania:");
- scanf("%s", bufor);
- err = SendBroadcast(&blok, bufor, nr_nad);
- if (err != NRC_GOODRET)
- {
- printf("Niepowodzenie wyslania wiadomosci:\n");
- }
- }
- else if (wyb == 4)
- {
- err = ReceiveBroadcast(&blok,bufor, nr_nad);
- if (err != NRC_GOODRET)
- {
- printf("Niepowodzenie odebrania wiadomosci:\n");
- }
- }
- else if (wyb == 5) break; };
- system("PAUSE");
- err = DeleteName(nad,&blok);
- if (err != NRC_GOODRET)
- {
- printf("Blad usuwania wezla:\n");
- system("pause");
- exit(1);
- }
- else printf("Usunieto nazwe wezla\n");
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment