Haifisch7734

SEND/RECEIVE

Mar 23rd, 2014
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.43 KB | None | 0 0
  1. #include <windows.h>
  2. #include <nb30.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #define lana 03
  6.  
  7.  
  8. UCHAR ResetAdapter(NCB *blok)
  9. {
  10.     memset(blok, '\0', sizeof(*blok));
  11.     blok->ncb_command = 0;
  12.     blok->ncb_command = NCBRESET;
  13.     blok->ncb_lana_num = lana;
  14.     Netbios(blok);
  15.     return blok->ncb_retcode;
  16. }
  17.  
  18. UCHAR AddNameUni (UCHAR naz[16], NCB *blok)
  19. {
  20.     memset(blok,'\0', sizeof(*blok));
  21.     memcpy(blok->ncb_name,naz,strlen(naz));
  22.     blok->ncb_lana_num = lana;
  23.     blok->ncb_command = NCBADDGRNAME;
  24.     Netbios(blok);
  25.     return blok->ncb_retcode;
  26. }
  27.  
  28. UCHAR AddNameMulti (UCHAR naz[16], NCB *blok)
  29. {
  30.     memset(blok,'\0', sizeof(*blok));
  31.     memcpy(blok->ncb_name,naz,strlen(naz));
  32.     blok->ncb_lana_num = lana;
  33.     blok->ncb_command = NCBADDGRNAME;
  34.     Netbios(blok);
  35.     return blok->ncb_retcode;
  36. }
  37.  
  38.  
  39. UCHAR DeleteName (UCHAR naz[16], NCB *blok)
  40. {
  41.   memcpy(blok->ncb_name,naz,strlen(naz));
  42.   blok->ncb_lana_num = lana;
  43.   blok->ncb_command = NCBDELNAME;
  44.   Netbios(blok);
  45.   return blok->ncb_retcode;
  46. }
  47.  
  48. UCHAR SendBroadcast(NCB *blok, char buf[50], UCHAR nr_nad)
  49. {
  50.   memset(blok,'\0',sizeof(*blok));
  51.   blok->ncb_lana_num = lana;
  52.   blok->ncb_command = NCBDGSENDBC;
  53.   blok->ncb_num = nr_nad;
  54.   blok->ncb_buffer = buf;
  55.   blok->ncb_length = strlen(buf);
  56.   Netbios(blok);
  57.   return blok->ncb_retcode;
  58. }
  59.  
  60. UCHAR ReceiveBroadcast(NCB *blok,char buf[50],UCHAR nr_odb)
  61. {
  62.   UCHAR od_kogo[16];
  63.  
  64.   memset(blok,'\0',sizeof(*blok));
  65.   blok->ncb_lana_num = lana;
  66.   blok->ncb_command = NCBDGRECVBC;
  67.   memset(buf,'\0',50);
  68.   blok->ncb_buffer = buf;
  69.   blok->ncb_length = 50;
  70.   blok->ncb_num = nr_odb;
  71.   printf("Oczekuje na datagram broadcastowy... \n");
  72.   Netbios(blok);
  73.   if (blok->ncb_retcode == 0)
  74.   {
  75.     memcpy(od_kogo,blok->ncb_callname,15);
  76.     //printf("Odebrano wiadomosc: ");
  77.     printf("Odebrano wiadomosc od %s : \n",od_kogo);
  78.     printf("%s",buf);
  79.     printf("\n");
  80.   }
  81.   return blok->ncb_retcode;
  82. }
  83.  
  84.  
  85. UCHAR SendDatagram(NCB *blok, char buf[50], UCHAR odb[16], UCHAR nr_nad)
  86. {
  87.   memset(blok,'\0',sizeof(*blok));
  88.   blok->ncb_lana_num = lana;
  89.   blok->ncb_command = NCBDGSEND;
  90.   memcpy(blok->ncb_callname,odb,strlen(odb));
  91.   blok->ncb_num = nr_nad;
  92.   blok->ncb_buffer = buf;
  93.   blok->ncb_length = strlen(buf);
  94.   Netbios(blok);
  95.   return blok->ncb_retcode;
  96. }
  97.  
  98. UCHAR ReceiveDatagram(NCB *blok, char buf[50], UCHAR nr_odb)
  99. {
  100.   UCHAR od_kogo[16];
  101.  
  102.   memset(blok,'\0',sizeof(*blok));
  103.   blok->ncb_lana_num = lana;
  104.   blok->ncb_command = NCBDGRECV;
  105.   blok->ncb_num = nr_odb;
  106.   memset(buf,'\0',50);
  107.   blok->ncb_buffer = buf;
  108.   blok->ncb_length = 50;
  109.   printf("Oczekuje na datagram... \n");
  110.   Netbios(blok);
  111.   if (blok->ncb_retcode == 0)
  112.   {
  113.     memcpy(od_kogo,blok->ncb_callname,15);
  114.     printf("Odebrano wiadomosc: ");
  115.  
  116.     printf("%s",buf);
  117.     printf("\n");
  118.   }
  119.   return blok->ncb_retcode;
  120. }
  121.  
  122.  
  123.  
  124.  
  125. int main(void)
  126. {
  127.     UCHAR err, nr_nad, odb[16], callnaz[16], nad[16];
  128.     char bufor[50];
  129.     int dlugosc;
  130.     char wyb;
  131.  
  132.     NCB blok;
  133.  
  134.     err = ResetAdapter(&blok);
  135.     if (err != NRC_GOODRET)
  136.        {
  137.         printf("Blad resetowania!\n");
  138.  
  139.         system("pause");
  140.         exit(1);
  141.        }
  142.  
  143.     printf("Podaj nazwe wezla (max. 15 znakow):");
  144.     scanf("%s", nad);
  145.  
  146.     printf("Do jakiej transmisji:\n");
  147.     printf("(1) multicast\n");
  148.     printf("(2) uniicast\n");
  149.     scanf("%d", &wyb);
  150.  
  151.     if (wyb==1) err = AddNameMulti(nad, &blok);
  152.     else
  153.     if (wyb==2) err = AddNameUni(nad, &blok);
  154.  
  155.  
  156.        if (err != NRC_GOODRET)
  157.           {
  158.           printf("Blad dodawania nazwy!\n");
  159.  
  160.           system("pause");
  161.           exit(1);
  162.           }
  163.           else printf("Dodano nazwe wezla\n");
  164.  
  165.     nr_nad = blok.ncb_num;
  166.  
  167.     while (wyb!=5){
  168.     printf("\n\nChcesz wyslac(1) datagram\n");
  169.     printf("       odebrac(2) datagram\n");
  170.     //printf("       wyslac(3) datagram broadcastowy\n");
  171.    // printf("       odebrac(4) datagram broadcastowy\n");
  172.     printf("       koniec(5): ");
  173.     scanf("%d", &wyb);
  174.  
  175.     if (wyb == 1)
  176.        {
  177.             printf("Prosze podac nazwe odbiorcy: ");
  178.             scanf("%s", odb);
  179.  
  180.             printf("Podaj tesc do przeslania:");
  181.             scanf("%s", bufor);
  182.  
  183.           err = SendDatagram(&blok, bufor, odb, nr_nad);
  184.           if (err != NRC_GOODRET)
  185.             {
  186.               printf("Niepowodzenie wyslania wiadomosci:\n");
  187.  
  188.             }
  189.         }
  190.     else if (wyb == 2)
  191.        {
  192.  
  193.           err = ReceiveDatagram(&blok, bufor, nr_nad);
  194.           if (err != NRC_GOODRET)
  195.             {
  196.               printf("Niepowodzenie odebrania wiadomosci:\n");
  197.  
  198.             }
  199.         }
  200.  
  201.     else if (wyb == 3)
  202.        {
  203.             printf("Podaj tesc do przeslania:");
  204.             scanf("%s", bufor);
  205.  
  206.           err = SendBroadcast(&blok, bufor, nr_nad);
  207.           if (err != NRC_GOODRET)
  208.             {
  209.               printf("Niepowodzenie wyslania wiadomosci:\n");
  210.  
  211.             }
  212.         }
  213.  
  214.     else if (wyb == 4)
  215.         {
  216.             err = ReceiveBroadcast(&blok,bufor, nr_nad);
  217.             if (err != NRC_GOODRET)
  218.             {
  219.               printf("Niepowodzenie odebrania wiadomosci:\n");
  220.  
  221.             }
  222.          }
  223.     else if (wyb == 5) break; };
  224.  
  225.  
  226.     system("PAUSE");
  227.     err = DeleteName(nad,&blok);
  228.     if (err != NRC_GOODRET)
  229.        {
  230.        printf("Blad usuwania wezla:\n");
  231.  
  232.        system("pause");
  233.        exit(1);
  234.        }
  235.     else printf("Usunieto nazwe wezla\n");
  236.  
  237.     system("PAUSE");
  238. return 0;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment