Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fstream>
  4. #include <iostream>
  5. #include <string>
  6. #include <winsock2.h>
  7. #pragma comment(lib,"ws2_32.lib") //Winsock Library
  8.  
  9. //#define SERVER "127.0.0.1"  //ip address of udp server
  10. #define BUFLEN 512  //Max length of buffer
  11. #define POLY 0x8408
  12. //#define PORT 8888   //The port on which to listen for incoming data
  13. unsigned short crc(unsigned char *sprava, unsigned short length){
  14.     unsigned char i;
  15.     unsigned int data;
  16.     unsigned int crc = 0xffff;
  17.  
  18.     if (length == 0)
  19.         return(~crc);
  20.  
  21.     do
  22.     {
  23.         for (i = 0, data = (unsigned int)0xff & *sprava++;
  24.             i < 8;
  25.             i++, data >>= 1)
  26.         {
  27.             if ((crc & 0x0001) ^ (data & 0x0001))
  28.                 crc = (crc >> 1) ^ POLY;
  29.             else  crc >>= 1;
  30.         }
  31.     } while (--length);
  32.  
  33.     crc = ~crc;
  34.     data = crc;
  35.     crc = (crc << 8) | (data >> 8 & 0xff);
  36.  
  37.     return (crc);
  38.  
  39. }
  40.  
  41. int skontroluj_crc(char* sprava)
  42. {
  43.     int crcc, dlzka = sprava[1] * 256 + sprava[2] + 3;
  44.     crcc = crc((unsigned char*)sprava, dlzka);
  45.     if ((unsigned char)sprava[dlzka] == crcc / 256 && (unsigned char)sprava[dlzka + 1] == crcc % 256){
  46.         return 1;
  47.     }
  48.     else{
  49.         return 0;
  50.     }
  51. }
  52.  
  53. unsigned char* vytvor_spravu(char* data, int typ, unsigned short velkost_fragmentu, int offset){
  54.     unsigned char *sprava;
  55.     unsigned short crcc;
  56.     int velkost;
  57.  
  58.     if (strlen(data+velkost_fragmentu*offset) < velkost_fragmentu){
  59.         velkost = strlen(data+velkost_fragmentu*offset)+1;
  60.     }
  61.     else{
  62.         velkost = velkost_fragmentu;
  63.     }
  64.     switch (typ){
  65.     case 1:/*textova sprava*/
  66.         sprava = (unsigned char*)malloc(sizeof(unsigned char)* (5 + velkost));
  67.         sprava[0] = typ;
  68.         sprava[1] = velkost / 256;
  69.         sprava[2] = velkost % 256;
  70.         strcpy((char*)&sprava[3], data + velkost_fragmentu*offset);
  71.         crcc = crc(sprava, velkost + 3);
  72.         sprava[velkost + 3] = crcc / 256;
  73.         sprava[velkost + 4] = crcc % 256;
  74.         break;
  75.  
  76.     case 9: //posledna textova sprava
  77.         sprava = (unsigned char*)malloc(sizeof(unsigned char)* (5 + velkost));
  78.         sprava[0] = typ;
  79.         sprava[1] = velkost / 256;
  80.         sprava[2] = velkost % 256;
  81.         strcpy((char*)&sprava[3], data + velkost_fragmentu*offset);
  82.         crcc = crc(sprava, velkost + 3);
  83.         sprava[velkost + 3] = crcc / 256;
  84.         sprava[velkost + 4] = crcc % 256;
  85.         break;
  86.  
  87.     default:/*spravy bez dat*/
  88.         sprava = (unsigned char*)malloc(sizeof(unsigned char)* (5));
  89.         sprava[0] = typ;
  90.         sprava[1] = 0;
  91.         sprava[2] = 0;
  92.         crcc = crc(sprava, 3);
  93.         sprava[3] = crcc / 256;
  94.         sprava[4] = crcc % 256;
  95.         break;
  96.     }
  97.     return sprava;
  98. }
  99.  
  100. int rozbal_spravu(char* sprava){
  101.     unsigned char *ACK_sprava, *potvrdenie_cinnosti, *potvrdenie_nadviazania;
  102.  
  103.     switch (sprava[0]){
  104.     case 1:
  105.         ACK_sprava = vytvor_spravu(NULL, 2, 0, 0);//vztvorenie ACK spravy
  106.         return 1;
  107.         break;
  108.     case 3:     //prijatie chybneho paketu
  109.         return -1;
  110.         break;
  111.     case 4:     //keep alive sprava
  112.         potvrdenie_cinnosti = vytvor_spravu(NULL, 5, 0, 0);
  113.         return 1;
  114.         break;
  115.     case 6:     //nadviazanie spojenia
  116.         potvrdenie_nadviazania = vytvor_spravu(NULL, 7, 0, 0);
  117.         return 2;
  118.         break;
  119.     case 9:     //posledny fragment textovej spravy
  120.         printf("%s\n", sprava + 3);
  121.         ACK_sprava = vytvor_spravu(NULL, 2, 0, 0);//vztvorenie ACK spravy
  122.     }
  123. }
  124.  
  125. int keep_alive(struct sockaddr_in si_other, int slen, int s,char* buf){
  126.     char *keep_alive;
  127.     keep_alive = (char*)vytvor_spravu("", 4, 0, 0);
  128.     if (sendto(s, keep_alive, strlen(keep_alive), 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  129.     {
  130.         printf("sendto() failed with error code : %d", WSAGetLastError());
  131.         exit(EXIT_FAILURE);
  132.     }
  133.     if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  134.     {
  135.         printf("recvfrom() failed with error code : %d", WSAGetLastError());
  136.         exit(EXIT_FAILURE);
  137.     }
  138.     if (buf[0] != 5)
  139.         printf("Nadviazanie nebolo udržané");
  140.  
  141. }
  142.  
  143. void posli_spravu(char *message, struct sockaddr_in si_other, int slen, int s, int velkost_fragmentu){
  144.     int bity = 0, offset = 0;
  145.     unsigned char *sprava;
  146.     char *buf;
  147.     buf = (char*)malloc(sizeof(char)* 500);
  148.     while (bity+velkost_fragmentu < strlen(message)+1){
  149.         sprava = vytvor_spravu(message, 1, velkost_fragmentu, offset);
  150.         if (sendto(s, (char*)sprava, strlen(message)+5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  151.         {
  152.             printf("sendto() failed with error code : %d", WSAGetLastError());
  153.             exit(EXIT_FAILURE);
  154.         }
  155.  
  156.         if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  157.         {
  158.             printf("recvfrom() failed with error code : %d", WSAGetLastError());
  159.             exit(EXIT_FAILURE);
  160.         }
  161.         /*TODO: pridat  funkcionalitu ze to daco urobi*/
  162.         offset++;
  163.         bity += velkost_fragmentu;
  164.     }
  165.     sprava = vytvor_spravu(message, 9, velkost_fragmentu, offset);
  166.     if (sendto(s, (char*)sprava, strlen(message)+6, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  167.     {
  168.         printf("sendto() failed with error code : %d", WSAGetLastError());
  169.         exit(EXIT_FAILURE);
  170.     }
  171. }
  172.  
  173. /*
  174. void client(){
  175.     struct sockaddr_in si_other;
  176.     int s, slen = sizeof(si_other), velkostfrag, port;
  177.     char buf[BUFLEN], IP[15];
  178.     char message[BUFLEN];
  179.     WSADATA wsa;
  180.  
  181.     printf("Zadajte IP serveru:");
  182.     scanf("%s", &IP);
  183.     if (strcmp(IP, "l") == 0)strcpy(IP, "127.0.0.1");
  184.  
  185.     printf("Zadajte port:");
  186.     scanf("%d", &port);
  187.  
  188.     printf("Zadajte max veľkosť fragmentu(1-65502B):");
  189.     scanf("%d", &velkostfrag);
  190.  
  191.  
  192.     //Initialise winsock
  193.     printf("\nInitialising Winsock...");
  194.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  195.     {
  196.         printf("Failed. Error Code : %d", WSAGetLastError());
  197.         exit(EXIT_FAILURE);
  198.     }
  199.     printf("Initialised.\n");
  200.  
  201.     //create socket
  202.     if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR)
  203.     {
  204.         printf("socket() failed with error code : %d", WSAGetLastError());
  205.         exit(EXIT_FAILURE);
  206.     }
  207.  
  208.     //setup address structure
  209.     memset((char *)&si_other, 0, sizeof(si_other));
  210.     si_other.sin_family = AF_INET;
  211.     si_other.sin_port = htons(port);
  212.     si_other.sin_addr.S_un.S_addr = inet_addr(IP);
  213.  
  214.     //start communication
  215.     while (1)
  216.     {
  217.         printf("Enter message :  ");
  218.         //gets(message);
  219.         scanf("%s", &message);
  220.  
  221.         //send the message
  222.         if (sendto(s, message, strlen(message), 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  223.         {
  224.             printf("sendto() failed with error code : %d", WSAGetLastError());
  225.             exit(EXIT_FAILURE);
  226.         }
  227.  
  228.         //receive a reply and print it
  229.         //clear the buffer by filling null, it might have previously received data
  230.         memset(buf, '\0', BUFLEN);
  231.         //try to receive some data, this is a blocking call
  232.         if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  233.         {
  234.             printf("recvfrom() failed with error code : %d", WSAGetLastError());
  235.             exit(EXIT_FAILURE);
  236.         }
  237.         printf("Druha strana :  ");
  238.         puts(buf);
  239.     }
  240.  
  241.     closesocket(s);
  242.     WSACleanup();
  243. }*/
  244.  
  245. int client(){
  246.     struct sockaddr_in si_other;
  247.     int s, slen = sizeof(si_other), velkostfrag, port;
  248.     char buf[BUFLEN], IP[15];
  249.     char message[BUFLEN];
  250.     WSADATA wsa;
  251.  
  252.     printf("Zadajte IP serveru:");
  253.     //vymazat scanf("%s", &IP);
  254.     strcpy(IP,"l");
  255.     if (strcmp(IP, "l") == 0)strcpy(IP, "127.0.0.1");
  256.  
  257.     printf("Zadajte port:");
  258.     //vymazat scanf("%d", &port);
  259.     port = 8888;
  260.     printf("Zadajte max veľkosť fragmentu(1-65502B):");
  261.     //vymazat scanf("%d", &velkostfrag);
  262.     velkostfrag = 5;
  263.  
  264.  
  265.     //Initialise winsock
  266.     printf("\nInitialising Winsock...");
  267.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  268.     {
  269.         printf("Failed. Error Code : %d", WSAGetLastError());
  270.         exit(EXIT_FAILURE);
  271.     }
  272.     printf("Initialised.\n");
  273.  
  274.     //create socket
  275.     if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR)
  276.     {
  277.         printf("socket() failed with error code : %d", WSAGetLastError());
  278.         exit(EXIT_FAILURE);
  279.     }
  280.  
  281.     //setup address structure
  282.     memset((char *)&si_other, 0, sizeof(si_other));
  283.     si_other.sin_family = AF_INET;
  284.     si_other.sin_port = htons(port);
  285.     si_other.sin_addr.S_un.S_addr = inet_addr(IP);
  286.  
  287.     //start communication
  288.     char *nadviazanie_spojenia;
  289.  
  290.     //nadviazanie spojenia
  291.     nadviazanie_spojenia = (char*)vytvor_spravu("",6,0,0);
  292.     if (sendto(s, nadviazanie_spojenia, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  293.     {
  294.         printf("sendto() failed with error code : %d", WSAGetLastError());
  295.         exit(EXIT_FAILURE);
  296.     }
  297.  
  298.     if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  299.     {
  300.         printf("recvfrom() failed with error code : %d", WSAGetLastError());
  301.         exit(EXIT_FAILURE);
  302.     }
  303.     if (buf[0] != 7){
  304.         printf("Nadviazanie spojenia nebolo úspešné");//pridat timeout ak to bude trvat moc dlho
  305.         return -1;
  306.     }
  307.    
  308.     char akcia;
  309.     printf("s -posielanie sprav\np -prijimanie sprav\nc -poslanie chybneho fragmentu\nz -zmena klienta/servera\nk -koniec\n");
  310.     printf("Vyberte si akciu:");
  311.     while (scanf("%c",&akcia)>0)//akcia-> posielaj spravy, primaj spravy, zmen max velkost, zmen klienta//server
  312.     {
  313.         int prvy_krat=0;
  314.         switch (akcia)
  315.         {
  316.         case 's':   //sprava, ked je prazdna prejdi do vyberu
  317.         {
  318.                         char* sprava;
  319.                         std::string input;
  320.                         int znovuposlanie = 0;
  321.                         sprava = (char*)malloc(sizeof(char)* 100);
  322.                         while (1){
  323.                             printf("Ja\t: ");
  324.                             if(prvy_krat==0)getchar();
  325.                             prvy_krat = 1;
  326.                             gets(sprava);
  327.                            
  328.                             /*std::getline(std::cin, input);
  329.                             char *sprava = input.c_str();*/
  330.                             //scanf("%s", sprava);
  331.                             if (strcmp(sprava, "\n") == 0){
  332.                                 break;
  333.                             }
  334.                             posli_spravu(sprava, si_other, slen, s, velkostfrag);
  335.                             //prijatie ACK
  336.                             if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  337.                             {
  338.                                 printf("recvfrom() failed with error code : %d", WSAGetLastError());
  339.                                 exit(EXIT_FAILURE);
  340.                             }
  341.                             while (buf[0] == 3 && znovuposlanie < 3){
  342.                                 znovuposlanie++;
  343.                                 posli_spravu(sprava, si_other, slen, s, velkostfrag);
  344.  
  345.                                 if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR)
  346.                                 {
  347.                                     printf("recvfrom() failed with error code : %d", WSAGetLastError());
  348.                                     exit(EXIT_FAILURE);
  349.                                 }
  350.                             }
  351.                         }
  352.                         break;
  353.         }
  354.         case'p':    //prijmi spravu
  355.             break;
  356.         case 'c':   //posli chybny paket
  357.             break;
  358.         case'f':    //zmen max velkost dat vo fragmente
  359.             break;
  360.         case 'z':   //zmen klienta/server
  361.             break;
  362.         case 'k':   //koniec
  363.             break;
  364.         default:
  365.             break;
  366.         }
  367.     }
  368.     char *ukoncenie_spojenia;
  369.     ukoncenie_spojenia =(char*) vytvor_spravu("",8,0,0);
  370.     if (sendto(s, ukoncenie_spojenia, strlen(ukoncenie_spojenia), 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  371.     {
  372.         printf("sendto() failed with error code : %d", WSAGetLastError());
  373.         exit(EXIT_FAILURE);
  374.     }
  375.     closesocket(s);
  376.     WSACleanup();
  377. }
  378.  
  379.  
  380. /*
  381. void server(){
  382.     SOCKET s;
  383.     struct sockaddr_in server, si_other;
  384.     int slen, recv_len, port;
  385.     char buf[BUFLEN];
  386.     WSADATA wsa;
  387.  
  388.     slen = sizeof(si_other);
  389.  
  390.     printf("Zadajte port:");
  391.     scanf("%d", &port);
  392.  
  393.     //Initialise winsock
  394.     printf("\nInitialising Winsock...");
  395.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  396.     {
  397.         printf("Failed. Error Code : %d", WSAGetLastError());
  398.         exit(EXIT_FAILURE);
  399.     }
  400.     printf("Initialised.\n");
  401.  
  402.     //Create a socket
  403.     if ((s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
  404.     {
  405.         printf("Could not create socket : %d", WSAGetLastError());
  406.     }
  407.     printf("Socket created.\n");
  408.  
  409.     //Prepare the sockaddr_in structure
  410.     server.sin_family = AF_INET;
  411.     server.sin_addr.s_addr = INADDR_ANY;
  412.     server.sin_port = htons(port);
  413.  
  414.     //Bind
  415.     if (bind(s, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR)
  416.     {
  417.         printf("Bind failed with error code : %d", WSAGetLastError());
  418.         exit(EXIT_FAILURE);
  419.     }
  420.     puts("Bind done");
  421.  
  422.     //keep listening for data
  423.     while (1)
  424.     {
  425.         printf("Waiting for data...");
  426.         fflush(stdout);
  427.  
  428.         //clear the buffer by filling null, it might have previously received data
  429.         memset(buf, '\0', BUFLEN);
  430.  
  431.         //try to receive some data, this is a blocking call
  432.         if ((recv_len = recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR)
  433.         {
  434.             printf("recvfrom() failed with error code : %d", WSAGetLastError());
  435.             exit(EXIT_FAILURE);
  436.         }
  437.         char *sprava;
  438.         if (buf[0] == 6)
  439.         {
  440.             sprava = (char*)vytvor_spravu("", 7, 0, 0);
  441.             if (sendto(s, sprava, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  442.             {
  443.                 printf("sendto() failed with error code : %d", WSAGetLastError());
  444.                 exit(EXIT_FAILURE);
  445.             }
  446.  
  447.         }
  448.  
  449.         //print details of the client/peer and the data received
  450.         //printf("Received packet from %s:%d\n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));
  451.         printf("You: %s\n", buf + 3);
  452.  
  453.         //char sprava[BUFLEN];
  454.         /*printf("poslite spravu:");
  455.  
  456.         scanf("%s", sprava);
  457.         if (sendto(s, sprava, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR)
  458.         {
  459.         printf("sendto() failed with error code : %d", WSAGetLastError());
  460.         exit(EXIT_FAILURE);
  461.         }*/
  462.  
  463.         //now reply the client with the same data
  464.         /*
  465.         if (sendto(s, buf, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR)
  466.         {
  467.         printf("sendto() failed with error code : %d", WSAGetLastError());
  468.         exit(EXIT_FAILURE);
  469.         }
  470.     }
  471.  
  472.     closesocket(s);
  473.     WSACleanup();
  474. }
  475. */
  476.  
  477. void server(){
  478.     SOCKET s;
  479.     struct sockaddr_in server, si_other;
  480.     int slen, recv_len, port;
  481.     char buf[BUFLEN];
  482.     WSADATA wsa;
  483.  
  484.     slen = sizeof(si_other);
  485.  
  486.     printf("Zadajte port:");
  487.     //scanf("%d", &port);
  488.     port = 8888;
  489.  
  490.     //Initialise winsock
  491.     printf("\nInitialising Winsock...");
  492.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  493.     {
  494.         printf("Failed. Error Code : %d", WSAGetLastError());
  495.         exit(EXIT_FAILURE);
  496.     }
  497.     printf("Initialised.\n");
  498.  
  499.     //Create a socket
  500.     if ((s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
  501.     {
  502.         printf("Could not create socket : %d", WSAGetLastError());
  503.     }
  504.     printf("Socket created.\n");
  505.  
  506.     //Prepare the sockaddr_in structure
  507.     server.sin_family = AF_INET;
  508.     server.sin_addr.s_addr = INADDR_ANY;
  509.     server.sin_port = htons(port);
  510.  
  511.     //Bind
  512.     if (bind(s, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR)
  513.     {
  514.         printf("Bind failed with error code : %d", WSAGetLastError());
  515.         exit(EXIT_FAILURE);
  516.     }
  517.     puts("Bind done");
  518.  
  519.     //keep listening for data
  520.     char *final_sprava;
  521.     int pismen = 0;
  522.     final_sprava = (char*)malloc(sizeof(char)* 500);
  523.     while (1)
  524.     {
  525.         fflush(stdout);
  526.  
  527.         //clear the buffer by filling null, it might have previously received data
  528.         memset(buf, '\0', BUFLEN);
  529.  
  530.         //try to receive some data, this is a blocking call
  531.         if ((recv_len = recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR)
  532.         {
  533.             printf("recvfrom() failed with error code : %d", WSAGetLastError());
  534.             exit(EXIT_FAILURE);
  535.         }
  536.         if (skontroluj_crc(buf) == 0){
  537.             char* msg;
  538.             msg = (char*)vytvor_spravu("", 3, 0, 0);
  539.             if (sendto(s, msg, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  540.             {
  541.                 printf("sendto() failed with error code : %d", WSAGetLastError());
  542.                 exit(EXIT_FAILURE);
  543.             }
  544.         }
  545.         else
  546.         {
  547.  
  548.             char *sprava;
  549.             switch (buf[0]){
  550.             case 6:
  551.                 sprava = (char*)vytvor_spravu("", 7, 0, 0);
  552.                 if (sendto(s, sprava, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  553.                 {
  554.                     printf("sendto() failed with error code : %d", WSAGetLastError());
  555.                     exit(EXIT_FAILURE);
  556.                 }
  557.                 break;
  558.             case 1:
  559.                 sprava = (char*)vytvor_spravu("", 2, 0, 0);
  560.                 if (sendto(s, sprava, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  561.                 {
  562.                     printf("sendto() failed with error code : %d", WSAGetLastError());
  563.                     exit(EXIT_FAILURE);
  564.                 }
  565.                 strcpy(final_sprava + pismen, buf + 3);
  566.                 pismen += (unsigned char)buf[1] * 256 + (unsigned char)buf[2];
  567.                 break;
  568.             case 9:
  569.                 sprava = (char*)vytvor_spravu("", 2, 0, 0);
  570.                 if (sendto(s, sprava, 5, 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
  571.                 {
  572.                     printf("sendto() failed with error code : %d", WSAGetLastError());
  573.                     exit(EXIT_FAILURE);
  574.                 }
  575.                 strcpy(final_sprava + pismen, buf + 3);
  576.                 printf("You\t: %s\n", final_sprava);
  577.                 pismen = 0;
  578.                 break;
  579.             }
  580.         }
  581.  
  582.  
  583.         //print details of the client/peer and the data received
  584.         //printf("Received packet from %s:%d\n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));
  585.         //printf("You\t: %s\n", buf + 3);
  586.  
  587.         //char sprava[BUFLEN];
  588.         /*printf("poslite spravu:");
  589.  
  590.         scanf("%s", sprava);
  591.         if (sendto(s, sprava, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR)
  592.         {
  593.         printf("sendto() failed with error code : %d", WSAGetLastError());
  594.         exit(EXIT_FAILURE);
  595.         }*/
  596.  
  597.         //now reply the client with the same data
  598.         /*
  599.         if (sendto(s, buf, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR)
  600.         {
  601.         printf("sendto() failed with error code : %d", WSAGetLastError());
  602.         exit(EXIT_FAILURE);
  603.         }*/
  604.     }
  605.  
  606.     closesocket(s);
  607.     WSACleanup();
  608. }
  609.  
  610. int main(void)
  611. {
  612.     unsigned char *c;
  613.  
  614.    
  615.     /*c = vytvor_spravu("abcdefghijk", 1, 7, 1);
  616.     vytvor_spravu("",3, 0, 0);//velkost aj s \0 takze o jedno vacsie ako je pocet pismen
  617.         printf("%s",(char*)( c+ 3));*/
  618.    
  619.         char rezim;
  620.     printf("Vyberte si rezim aplikácie(s-server/c-klient):");
  621.     scanf("%c", &rezim);
  622.  
  623.     switch (rezim){
  624.     case 's':
  625.         server();
  626.         break;
  627.     case 'c':
  628.         client();
  629.         break;
  630.     default:
  631.         printf("Zadali ste zlú hodnotu.\nVyberte si režim aplikácie(s-server/c-klient):");
  632.         break;
  633.  
  634.     }
  635.  
  636.     system("pause");
  637.     return 0;
  638. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement