Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement