daily pastebin goal
32%
SHARE
TWEET

Untitled

a guest Dec 7th, 2017 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include "Server.h"
  3. #include <cstdlib>
  4. #include <cstdio>
  5. #include <ctime>
  6.  
  7.  
  8. int main()
  9. {
  10.     srand(time(NULL));
  11.     Server S;
  12.     S.main();
  13.     return 0;
  14. }
  15.  
  16. void Server::main() {
  17.  
  18.     std::cout << "Nasluchiwanie.." << std::endl;
  19.  
  20.     //------------------------------------------Laczenie
  21.  
  22.     ip = sf::IpAddress::IpAddress("127.0.0.1");
  23.     listener.listen(2000);
  24.     listener.accept(socket);
  25.     std::cout << "Polaczono" << std::endl;
  26.  
  27.     //------------------------------------------Laczenie
  28.  
  29.     Prep_ID();
  30.     socket.send(msg, 64);
  31.     ClearPacket();
  32.     std::cout << "Wyslano IP" << std::endl;
  33.     ShowPacket();
  34.     std::cout << std::endl;
  35.  
  36.     //------------------------------------------Praca
  37.  
  38.     while (Status != "Stop_") {
  39.         Odbior_pakietu();
  40.         std::cout << "Odebrano pakiet" << std::endl;
  41.         ShowPacket();
  42.         std::cout << std::endl;
  43.         if (Status == "Stop_") {
  44.             socket.disconnect();
  45.             return;
  46.         }
  47.         else {
  48.             Wyluskanie_dzialania();
  49.         }
  50.     }
  51.  
  52. }
  53.  
  54. void Server::Prep_ID() {
  55.     int r = rand() % 9 + 1;
  56.     Odp = "Witaj";
  57.     Status = "dajID";
  58.     ID = "0";
  59.     Czas = datowanie();
  60.     Dane = "000000000" + std::to_string(r);
  61.     Packing();
  62. }
  63. void Server::Prep_result() {
  64.     ID = "0";
  65.     Czas = datowanie();
  66.     std::string temp;
  67.     temp = std::to_string(wynik);
  68.     Dane = "";
  69.     if (wynik > 0) {
  70.         if (temp.size() <= 10) {
  71.             int ilosc_zer = 10 - temp.size();
  72.             for (int i = ilosc_zer; i > 0; i--) {
  73.                 Dane += "0";
  74.             }
  75.             Dane += temp;
  76.             Status = "Wynik";
  77.         }
  78.         else {
  79.             Status = "Error";
  80.             Dane = "          ";
  81.         }
  82.     }
  83.     else {
  84.         if (temp.size() <= 9) {
  85.             int ilosc_zer = 9 - temp.size();
  86.             for (int i = ilosc_zer; i > 0; i--) {
  87.                 Dane += "0";
  88.             }
  89.             Dane += temp;
  90.             Status = "Wynik";
  91.         }
  92.         else {
  93.             Status = "Error";
  94.             Dane = "          ";
  95.         }
  96.     }
  97.     Packing();
  98. }
  99. void Server::Odbior_pakietu() {
  100.     socket.receive(msg, 64, received);
  101.     Unpacking();
  102. }
  103. void Server::Wyluskanie_liczb() {
  104.     int cnt = 0;
  105.     for (int i = 0; i < 5; i++) {
  106.         if (Dane[i] == '0') {
  107.             cnt++;
  108.         }
  109.         else { break; }
  110.     }
  111.     l1 = std::stoi(Dane.substr(cnt, 5 - cnt));
  112.     cnt = 0;
  113.     for (int i = 5; i < 10; i++) {
  114.         if (Dane[i] == '0') {
  115.             cnt++;
  116.         }
  117.         else { break; }
  118.     }
  119.     l2 = std::stoi(Dane.substr(5 + cnt, 5 - cnt));
  120. }
  121. void Server::Wyluskanie_dzialania() {
  122.     if (Odp == "Dodaj") {
  123.         Wyluskanie_liczb();
  124.         wynik = dodaj(l1, l2);
  125.         Prep_result();
  126.         std::cout << "Wyslano pakiet" << std::endl;
  127.         ShowPacket();
  128.         std::cout << std::endl;
  129.         socket.send(msg, 64);
  130.         ClearPacket();
  131.     }
  132.     else if (Odp == "odejm") {
  133.         Wyluskanie_liczb();
  134.         wynik = odej(l1, l2);
  135.         Prep_result();
  136.         std::cout << "Wyslano pakiet" << std::endl;
  137.         ShowPacket();
  138.         socket.send(msg, 64);
  139.         ClearPacket();
  140.     }
  141.     else if (Odp == "pomno") {
  142.         Wyluskanie_liczb();
  143.         wynik = mnoz(l1, l2);
  144.         Prep_result();
  145.         std::cout << "Wyslano pakiet" << std::endl;
  146.         ShowPacket();
  147.         socket.send(msg, 64);
  148.         ClearPacket();
  149.     }
  150.     else if (Odp == "dziel") {
  151.         Wyluskanie_liczb();
  152.         wynik = dziel(l1, l2);
  153.         Prep_result();
  154.         std::cout << "Wyslano pakiet" << std::endl;
  155.         ShowPacket();
  156.         socket.send(msg, 64);
  157.         ClearPacket();
  158.     }
  159.     else if (Odp == "poteg") {
  160.         Wyluskanie_liczb();
  161.         wynik = poteg(l1, l2);
  162.         Prep_result();
  163.         std::cout << "Wyslano pakiet" << std::endl;
  164.         ShowPacket();
  165.         socket.send(msg, 64);
  166.         ClearPacket();
  167.     }
  168.     else if (Odp == "pierw") {
  169.         Wyluskanie_liczb();
  170.         wynik = pierw(l1, l2);
  171.         Prep_result();
  172.         std::cout << "Wyslano pakiet" << std::endl;
  173.         ShowPacket();
  174.         socket.send(msg, 64);
  175.         ClearPacket();
  176.     }
  177.     else if (Odp == "modul") {
  178.         Wyluskanie_liczb();
  179.         wynik = mod(l1, l2);
  180.         Prep_result();
  181.         std::cout << "Wyslano pakiet" << std::endl;
  182.         ShowPacket();
  183.         socket.send(msg, 64);
  184.         ClearPacket();
  185.     }
  186.     else if (Odp == "Nwd__") {
  187.         Wyluskanie_liczb();
  188.         wynik = NWD(l1, l2);
  189.         Prep_result();
  190.         std::cout << "Wyslano pakiet" << std::endl;
  191.         ShowPacket();
  192.         socket.send(msg, 64);
  193.         ClearPacket();
  194.     }
  195.     else if (Odp == "Silni") {
  196.         l1 = std::stoi(Dane.substr(0, 4));
  197.         wynik = silnia(l1);
  198.         Prep_result();
  199.         std::cout << "Wyslano pakiet" << std::endl;
  200.         ShowPacket();
  201.         socket.send(msg, 64);
  202.         ClearPacket();
  203.     }
  204. }
  205.  
  206. void Server::Packing() {
  207.     std::string temp;
  208.     temp += "#1:O=" + Odp + "+";
  209.     temp += "#2:S=" + Status + "+";
  210.     temp += "#3:I=" + ID + "+";
  211.     temp += "#4:C=" + Czas + "+";
  212.     temp += "#5:D=" + Dane + "+";
  213.  
  214.     std::rotate(temp.begin(), temp.begin() + 1, temp.end());
  215.     for (int i = 0; i <64; i++) {
  216.         msg[i] = temp[i];
  217.     }
  218. }
  219. void Server::Unpacking() {
  220.     std::string temp;
  221.  
  222.     for (int i = 0; i<64; i++) {
  223.         temp += msg[i];
  224.     }
  225.     Odp = temp.substr(12, 5);
  226.     Status = temp.substr(28, 5);
  227.     ID = temp.substr(51, 1);
  228.     Czas = temp.substr(61, 14);
  229.     Dane = temp.substr(84, 10);
  230. }
  231. void Server::ClearPacket() {
  232.     Odp = "     ";
  233.     Status = "     ";
  234.     ID = "0";
  235.     Czas = "              ";
  236.     Dane = "          ";
  237. }
  238. void Server::ShowPacket() {
  239.     for (int i = 0; i <64; i++) {
  240.         std::cout << msg[i];
  241.     }
  242.     std::cout << std::endl;
  243. }
  244.  
  245. int Server::dodaj(int x, int y)
  246. {
  247.     return x + y;
  248. }
  249. int Server::odej(int x, int y)
  250. {
  251.     return x - y;
  252. }
  253. int Server::mnoz(int x, int y)
  254. {
  255.     return x * y;
  256. }
  257. int Server::dziel(int x, int y)
  258. {
  259.     return x / y;
  260. }
  261. int Server::poteg(int x, int y)
  262. {
  263.     return pow(x, y);
  264. }
  265. int Server::pierw(int x, int y)
  266. {
  267.     return pow(x, 1 / y);
  268. }
  269. int Server::mod(int x, int y)
  270. {
  271.     return x%y;
  272. }
  273. int Server::NWD(int x, int y)
  274. {
  275.     do
  276.     {
  277.         if (x>y) x = x - y;
  278.         else y = y - x;
  279.     } while (x != y);
  280.     return x;
  281. }
  282.  
  283. std::string Server::datowanie() {
  284.     SYSTEMTIME st;
  285.     GetLocalTime(&st);
  286.     std::string temp;
  287.     int godzina = st.wHour;
  288.     int minuta = st.wMinute;
  289.     int sekunda = st.wSecond;
  290.     int dzien = st.wDay;
  291.     int miesiac = st.wMonth;
  292.     int rok = st.wYear;
  293.  
  294.     temp = std::to_string(rok);
  295.     if (miesiac > 9) {
  296.         temp += std::to_string(miesiac);
  297.     }
  298.     else if (miesiac < 10) {
  299.         temp += "0";
  300.         temp += std::to_string(miesiac);
  301.     }
  302.     if (dzien > 9) {
  303.         temp += std::to_string(dzien);
  304.     }
  305.     else if (dzien < 10) {
  306.         temp += "0";
  307.         temp += std::to_string(dzien);
  308.     }
  309.     if (godzina > 9) {
  310.         temp += std::to_string(godzina);
  311.     }
  312.     else if (godzina < 10) {
  313.         temp += "0";
  314.         temp += std::to_string(godzina);
  315.     }
  316.     if (minuta > 9) {
  317.         temp += std::to_string(minuta);
  318.     }
  319.     else if (minuta < 10) {
  320.         temp += "0";
  321.         temp += std::to_string(minuta);
  322.     }
  323.     if (sekunda > 9) {
  324.         temp += std::to_string(sekunda);
  325.     }
  326.     else if (sekunda < 10) {
  327.         temp += "0";
  328.         temp += std::to_string(sekunda);
  329.     }
  330.     return temp;
  331. }
  332.  
  333. int Server::silnia(int x) {
  334.     if (x<2) return x;
  335.     return x*silnia(x - 1);
  336. }
RAW Paste Data
Top