Advertisement
Sooldierr

UDP - wprowadzenie

Mar 15th, 2017
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #pragma comment(lib, "Ws2_32.lib")
  2. #include <winsock2.h>
  3. #include <iostream>
  4. #include <conio.h>
  5. #include <string.h>
  6. #include <stdio.h>
  7.  
  8. using namespace std;
  9.  
  10. class InitWinsock
  11. {
  12. public:
  13.     WSADATA wsaData;
  14.     InitWinsock()
  15.     {
  16.         if (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0)
  17.         {
  18.             cout << "Inicjalizacja biblioteki WinSock zakonczona sukcesem!" << endl;
  19.         }
  20.         else
  21.         {
  22.             cout << "Blad inicjalizacji biblioteki WinSock!" << endl;
  23.         }
  24.     }
  25.     ~InitWinsock()
  26.     {
  27.         WSACleanup();
  28.         cout << "Zwolniono biblioteke WinSock!" << endl;
  29.     }
  30. };
  31.  
  32.  
  33. int main()
  34. {
  35.     InitWinsock W;
  36.     SOCKADDR_IN sockaddrClient;
  37.     SOCKET Client = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //moze byc 0
  38.     if (Client == INVALID_SOCKET)
  39.     {
  40.         cout << "Nie mozna stworzyc gniazda!" << endl;
  41.         getch();
  42.         return 0;
  43.     }
  44.    
  45.     char host[128] = "192.168.0.46";
  46.     sockaddrClient.sin_family = AF_INET;
  47.     sockaddrClient.sin_port = htons(50000);
  48.     sockaddrClient.sin_addr.s_addr = inet_addr(host);
  49.  
  50.     while (true)
  51.     {
  52.         char tekst[128];
  53.         cout << "Podaj tekst: ";
  54.         gets_s(tekst);
  55.  
  56.         if (strcmp(tekst, "EXIT") == 0)
  57.             break;
  58.  
  59.         int wynik = sendto(Client, tekst, strlen(tekst), 0, (SOCKADDR *)&sockaddrClient, sizeof(sockaddrClient));
  60.         if (wynik == INVALID_SOCKET)
  61.         {
  62.             cout << "Blad wyslania: " << WSAGetLastError();
  63.             shutdown(Client, 2);
  64.             closesocket(Client);
  65.             getch();
  66.             return 0;
  67.         }
  68.         int size = sizeof(sockaddrClient);
  69.  
  70.         wynik = recvfrom(Client, tekst, sizeof(tekst), 0, (SOCKADDR *)&sockaddrClient, &size);
  71.         if (wynik == INVALID_SOCKET)
  72.         {
  73.             cout << "Blad odbierania danych: " << WSAGetLastError();
  74.             shutdown(Client, 2);
  75.             closesocket(Client);
  76.             getch();
  77.             return 0;
  78.         }
  79.         tekst[wynik] = 0;
  80.         cout << tekst << endl;
  81.     }
  82.     cout << "Koniec programu." << endl;
  83.     shutdown(Client, 2);
  84.     closesocket(Client);
  85.     getch();
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement