Advertisement
peterzig

[PWŚS] Hostname Klasy

Mar 7th, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.56 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  3.  
  4. #pragma comment(lib,"ws2_32.lib")
  5.  
  6. #include <winsock2.h>
  7. #include <iostream>
  8. #include <vector>
  9. #include <string>
  10. #include <conio.h>
  11.  
  12. using namespace std;
  13. class wyjatek
  14. {
  15. public:
  16.     wyjatek() { cout << "zgloszono sytuacje wyjatkowa\n"; }
  17. };
  18.  
  19. class CGniazda
  20. {
  21. private:
  22.     WORD version;
  23.     WSAData wsadata;
  24.     int error;
  25. public:
  26.     CGniazda();
  27.     ~CGniazda();
  28. };
  29.  
  30. CGniazda::CGniazda()
  31. {
  32.     version = MAKEWORD(2, 2);
  33.     error = WSAStartup(version, &wsadata);
  34.     if (error != 0)
  35.     {
  36.         cout << "Blad inicjalizacji WinSock, nr bledu: " << error << endl;
  37.         throw wyjatek();
  38.     }
  39.     else cout << "Inicjalizacja WinSock przebiegla pomyslnie" << endl;
  40. }
  41. CGniazda::~CGniazda()
  42. {
  43.     WSACleanup();
  44. }
  45.  
  46. class CHost
  47. {
  48. private:
  49.     hostent *adres;
  50.     char host[40];
  51.     sockaddr_in adresik;
  52.  
  53. public:
  54.     CHost(const char *w);
  55. };
  56.  
  57. CHost::CHost(const char *w)
  58. {
  59.  
  60.     strcpy(host, w);
  61.     adres = gethostbyname(host);
  62.     adresik.sin_addr.s_addr = *((unsigned long*)adres->h_addr);
  63.     cout << "Adres: " << inet_ntoa(adresik.sin_addr) << endl;
  64. }
  65.  
  66. vector <string> dane;
  67. int main()
  68. {
  69.     string nazwa;
  70.     char c;
  71.     try
  72.     {
  73.         CGniazda obiekt;
  74.  
  75.         while (1)
  76.         {
  77.             cout << "Wpisz nazwe hosta do translacji: ";
  78.             getline(cin, nazwa);
  79.             if (nazwa.length() == 0) break;
  80.             CHost obiekt2(nazwa.c_str());
  81.  
  82.             dane.push_back(nazwa);
  83.  
  84.             for (int i = 0; i<dane.size(); i++)
  85.             {
  86.                 cout << dane[i] << endl;
  87.             }
  88.  
  89.         }
  90.  
  91.     }
  92.     catch (...)
  93.     {
  94.         cout << "\nJakas tam obsluga wyjatku\n";
  95.     }
  96.  
  97.     _getch();
  98.     return 0;
  99.  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement