SHARE
TWEET

Untitled

a guest May 22nd, 2019 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include <WinSock2.h>
  3. #include <conio.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <vector>
  7.  
  8. #define END WSACleanup(); getch(); return 0;
  9. #define END2 shutdown(gniazdo,2); closesocket(gniazdo); WSACleanup(); getch(); return 0;
  10. #define ESC 27
  11. #define SPACE 32
  12. #define ENTER 13
  13.  
  14. #pragma comment(lib,"ws2_32.lib")
  15. using namespace std;
  16.  
  17. struct datagram
  18. {
  19.     char A;
  20.     char imie[7];
  21.     char Z;
  22.     char nazwisko[9];
  23. };
  24.  
  25. struct potwierdzenie
  26. {
  27.     char A;
  28.     char Z;
  29. };
  30.  
  31. int main(int argc, _TCHAR* argv[])
  32. {  
  33.     WSAData wsaData;
  34.     datagram *W = new datagram();
  35.     W->A = 0x32;
  36.     W->Z = 0x0A;
  37.     strcpy(W->imie, "Daniel");
  38.     strcpy(W->nazwisko, "Splawski");
  39.  
  40.     if((WSAStartup(MAKEWORD(2,2),&wsaData))!=0)
  41.     {
  42.         printf("Blad ladowania biblioteki : %d",WSAGetLastError());
  43.         END
  44.     }
  45.  
  46.     SOCKET gniazdo;
  47.  
  48.     if((gniazdo=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET)
  49.     {
  50.         printf("Blad ladowania gniazda : %d",WSAGetLastError());
  51.         END2
  52.     }
  53.  
  54.     SOCKADDR_IN client;
  55.     client.sin_family = AF_INET;
  56.     client.sin_addr.s_addr = INADDR_ANY;
  57.     client.sin_port=htons(0);
  58.  
  59.     if((bind(gniazdo,(SOCKADDR*)&client,sizeof(client)))==SOCKET_ERROR)
  60.     {
  61.         printf("Blad bindowania gniazda : %d",WSAGetLastError());
  62.         END2
  63.     }
  64.     int one = 1;
  65.     SOCKADDR_IN serwer;
  66.     serwer.sin_family=AF_INET;
  67.     serwer.sin_addr.s_addr = INADDR_BROADCAST;
  68.     serwer.sin_port=htons(7404);
  69.     int sAddrSize = sizeof(serwer);
  70.     setsockopt(gniazdo, SOL_SOCKET, SO_BROADCAST, (char*)&one, sizeof(one));
  71.  
  72.     timeval time = { 0, 100000 };
  73.     fd_set set;
  74.    
  75.     FD_ZERO(&set);
  76.     FD_SET(gniazdo, &set);
  77.  
  78.     if (SOCKET_ERROR == sendto(gniazdo, (char*)&W, sizeof(*W), 0, (SOCKADDR*)&serwer, sizeof(serwer)))
  79.     {
  80.         printf("blad wysylanych danych %d\n", WSAGetLastError());
  81.         getch();
  82.     }
  83.  
  84.     int przycisk;
  85.     printf("dowolny przycisk aby wyslac dane || aby zakonczyc nacisnij esc\n");
  86.    
  87.     while(true)
  88.     {
  89.         FD_ZERO(&set);
  90.         FD_SET(gniazdo, &set);
  91.         if (select(0, &set, 0, 0, &time) > 0)
  92.         {
  93.             if (FD_ISSET(gniazdo, &set) )
  94.             {
  95.                 recvfrom(gniazdo, buff, sizeof(buff), 0, (sockaddr*)&serwer, &sAddrSize);
  96.             }
  97.         }
  98.         if (_kbhit() )
  99.         {
  100.             przycisk = _getch();
  101.             if(przycisk == ESC)
  102.                 break;
  103.  
  104.             else if(przycisk == SPACE)
  105.             {
  106.                 setsockopt(gniazdo, SOL_SOCKET, SO_BROADCAST, (char*)&one, sizeof(one));
  107.                 serwer.sin_addr.s_addr = INADDR_BROADCAST;
  108.                 if(SOCKET_ERROR == sendto(gniazdo,(char*)&W,sizeof(*W),0,(SOCKADDR*)&serwer,sizeof(serwer)))
  109.                 {
  110.                     printf("blad wysylanych danych %d\n",WSAGetLastError());
  111.                     getch();
  112.                 }
  113.             }
  114.  
  115.             else if(przycisk == ENTER)
  116.             {
  117.                 setsockopt(gniazdo, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one));
  118.                 serwer.sin_addr.s_addr = inet_addr("192.168.0.104");
  119.                 if (SOCKET_ERROR == recvfrom(gniazdo, (char*) &W, sizeof(*W), 0, (SOCKADDR*)&serwer, &sAddrSize))
  120.                 {
  121.                     printf("blad wysylanych danych %d\n", WSAGetLastError());
  122.                     getch();
  123.                 }
  124.                 //cout << W->A << W->imie << W->Z << W->nazwisko;
  125.                 potwierdzenie *P = new potwierdzenie();
  126.                 P->A = 0x32;
  127.                 P->Z = 0x01;
  128.  
  129.                 if (SOCKET_ERROR == sendto(gniazdo, (char*)&P, sizeof(*P), 0, (SOCKADDR*)&serwer, sizeof(serwer)))
  130.                 {
  131.                     printf("blad wysylanych danych %d\n", WSAGetLastError());
  132.                     getch();
  133.                 }
  134.             }
  135.  
  136.         }
  137.     }
  138.  
  139.         setsockopt( gniazdo, SOL_SOCKET, SO_BROADCAST, (char*) &one, sizeof(one));
  140.         if(SOCKET_ERROR==sendto(gniazdo,(char*)&W,sizeof(double),0,(SOCKADDR*)&serwer,sizeof(serwer)))
  141.         {
  142.             printf("blad wysylanych danych %d\n",WSAGetLastError());
  143.             getch();
  144.         }
  145.     END2
  146. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top