Mihao

temp

Mar 22nd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <winsock.h>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. #pragma comment (lib,"ws2_32.lib")
  7. using namespace std;
  8.  
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11.     WSADATA wsaData;
  12.  
  13.     int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
  14.     if (result != NO_ERROR)
  15.     {
  16.         cout << "\nBiblioteka WinSock zainicjalizowana niepoprawnie. Kod bledu: " + WSAGetLastError() << endl;
  17.         return 0;
  18.     }
  19.     cout << "\nBiblioteka WinSock zainicjalizowana poprawnie." << endl;
  20.  
  21.     char sendBuff[1024];
  22.     char receiveBuff[1024];
  23.     int SenderAddrSize;
  24.     int iResult;
  25.     SOCKET _socket = INVALID_SOCKET;
  26.     sockaddr_in sockAddr;
  27.     _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  28.     if (_socket == INVALID_SOCKET)
  29.     {
  30.         cout << "\nGniazdo utworzone niepoprawnie. kod bledu: " + WSAGetLastError() << endl;
  31.         WSACleanup();
  32.         return 0;
  33.     }
  34.     cout << "\nGniazdo utworzone poprawnie." << endl;
  35.  
  36.     sockAddr.sin_family = AF_INET;
  37.     sockAddr.sin_port = htons(7404);
  38.     sockAddr.sin_addr.s_addr = inet_addr("192.168.0.103");
  39.     SenderAddrSize = sizeof (sockAddr);
  40.  
  41.     while ( true )
  42.     {
  43.         printf("\n\n> ");
  44.         cin >> sendBuff;
  45.         if (strcmp(sendBuff, "exit") == 0)
  46.             break;
  47.  
  48.         iResult = sendto(_socket, sendBuff, 1024, 0, (SOCKADDR *) & sockAddr, sizeof (sockAddr));
  49.         if (iResult == SOCKET_ERROR)
  50.         {
  51.             cout << "\nNieudana proba wyslania datagramu. Kod bledu: " + WSAGetLastError() << endl;
  52.             continue;
  53.         }
  54.  
  55.         iResult = recvfrom(_socket, receiveBuff, 1024, 0, (SOCKADDR *) & sockAddr, &SenderAddrSize);
  56.        
  57.         if (iResult == SOCKET_ERROR)
  58.         {
  59.             cout << "\nNieudana proba odebrania datagramu. Kod bledu: " + WSAGetLastError() << endl;
  60.             continue;
  61.         }
  62.  
  63.         if (strncmp(receiveBuff, "UNKNOWN COMMAND", 15) == 0)
  64.         {
  65.             printf("\nNie rozpoznano komendy\n");
  66.             continue;
  67.         }
  68.         vector<double> liczby;
  69.         receiveBuff[SenderAddrSize] = ' ';
  70.         char *buff;
  71.         buff = strtok(receiveBuff, " ");
  72.  
  73.         do
  74.         {
  75.             buff = strtok(NULL, " ");
  76.             liczby.push_back( atof(buff) );
  77.         }while(buff != NULL);
  78.  
  79.         double min = liczby[0], max = liczby[0], all = 0;
  80.  
  81.         printf("%c", receiveBuff[0]);
  82.         for (int i = 0; i < liczby.size(); i++)
  83.         {
  84.             if( max < liczby[i])
  85.                 max = liczby[i];
  86.             else if (min > liczby[i])
  87.                 min = liczby[i];
  88.             all += liczby[i];
  89.             printf(" %.3lf", liczby[i]);
  90.         }
  91.  
  92.         if (receiveBuff[0] == 'T')
  93.         {
  94.             printf("Temperatura minimalna: %.3lf", min);
  95.             printf("Temperatura maksymalna: %.3lf", max);
  96.             printf("Temperatura srednia: %.3lf", all/liczby.size());
  97.         }
  98.  
  99.         if (receiveBuff[0] == 'P')
  100.         {
  101.             printf("Cisnienie minimalne: %.3lf", min);
  102.             printf("Cisnienie maksymalne: %.3lf", max);
  103.             printf("Cisnienie srednie: %.3lf", all/liczby.size());
  104.         }
  105.     }
  106.     iResult = closesocket(_socket);
  107.     if (iResult == SOCKET_ERROR)
  108.     {
  109.         cout << "Nieudana proba zamknięcia gniazda. Kod bledu: %d" + WSAGetLastError() << endl;
  110.     }
  111.  
  112.     WSACleanup();
  113.     cout << "\nUsunieto z pamieci biblioteke WinSock." << endl;
  114.     return 0;
  115. }
Add Comment
Please, Sign In to add comment