Hyluss

pwss

Mar 21st, 2017
529
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. // UDP komunikacja prsota.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <conio.h>
  6. #include <cstdio>
  7. #include <WinSock2.h>
  8. #include <iostream>
  9. #include <cstdlib>
  10. #include <vector>
  11.  
  12. using namespace std;
  13.  
  14.  
  15. class wyjatek
  16. {
  17. DWORD dwError;
  18. public:
  19. wyjatek(int iResult)
  20. {
  21. printf ("Winsock - Blad nr %d",iResult);
  22. }
  23.  
  24. wyjatek (hostent *rH)
  25. {
  26. dwError = WSAGetLastError();
  27. if (dwError == WSAHOST_NOT_FOUND)
  28. {
  29. printf ("host not found");
  30. }
  31. else if (dwError = WSANO_DATA)
  32. {
  33. printf ("no data record");
  34. }
  35. else
  36. {
  37. printf ("failed %d",dwError);
  38. }
  39. }
  40. };
  41.  
  42. class TInicjalizacja
  43. {
  44. int iResult;
  45. WSAData wsaData;
  46. int dwError;
  47. public:
  48. TInicjalizacja()
  49. {
  50. iResult = WSAStartup (MAKEWORD (2,2), &wsaData);
  51. if (iResult != 0)
  52. {
  53.  
  54. throw wyjatek(iResult);
  55. }
  56. else
  57. {
  58. // printf ("Winosck jest oki\n");
  59. }
  60. }
  61. ~TInicjalizacja()
  62. {
  63. WSACleanup();
  64. }
  65.  
  66. };
  67.  
  68. class THost
  69. {
  70. int iResult;
  71. DWORD dwError;
  72. hostent *rH;
  73. char hostname[100];
  74. sockaddr_in serwer;
  75. sockaddr_in klient;
  76. public:
  77. THost (const char *nazwa)
  78. {
  79. strcpy (hostname,nazwa);
  80. rH = gethostbyname(hostname);
  81. if (rH == NULL) throw wyjatek (rH);
  82. else
  83. {
  84. serwer.sin_family = AF_INET;
  85. serwer.sin_port = htons (5000);
  86. serwer.sin_addr.s_addr = (INADDR_BROADCAST);
  87.  
  88. //
  89. klient.sin_family = AF_INET;
  90. klient.sin_port = htons (5000);//( (rand()%65535) );
  91. klient.sin_addr.s_addr = htonl (INADDR_ANY);// inet_addr (hostname);//(INADDR_ANY);// inet_addr (hostname);
  92. // klient.sin_addr.s_addr = inet_addr ("255.255.255.255");
  93. }
  94. }
  95.  
  96. hostent ZwrocHostent()
  97. {
  98. return *rH;
  99. }
  100.  
  101. sockaddr_in Zwrocserwer()
  102. {
  103. return serwer;
  104. }
  105.  
  106. sockaddr_in Zwrocklient()
  107. {
  108. return klient;
  109. }
  110.  
  111. };
  112.  
  113. struct TAdresyIP
  114. {
  115. int suma;
  116. char* IP;
  117. };
  118.  
  119.  
  120. int _tmain(int argc, _TCHAR* argv[])
  121. {
  122.  
  123. TInicjalizacja TW;
  124.  
  125.  
  126. /////////////////////////////////////////////////////////////
  127. SOCKET Client;
  128. Client = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  129. if (Client == INVALID_SOCKET)
  130. {
  131. cout << "Nie mozna stworzyc socket" << endl;
  132. getch();
  133. return 1;
  134. }
  135. /* const char on = 1;
  136. if (setsockopt (Client, SOL_SOCKET, SO_BROADCAST,&on,sizeof (on) ) < 0)
  137. {
  138. cout << "blad" << endl;
  139. getch();
  140. closesocket(Client);
  141. return 1;
  142. }
  143. */
  144. //////////////////////////////////////////////////////////////////
  145. char host[128] = "127.0.0.1";
  146. THost Th (host);
  147. //////////////////////////////////////////////////////////////////////////////////////
  148. char ciag [1024];
  149.  
  150.  
  151.  
  152. char buff2[1024];
  153. int buffLen = 1024;
  154.  
  155.  
  156. int AddrSize; //= sizeof (Addr);
  157.  
  158. int wynik;
  159. bool koncz = false;
  160.  
  161. int Random = 0;
  162. char wyslanymsg[1024];
  163. bool sprawdzAdres = false;
  164.  
  165. vector <TAdresyIP> adresyIP;
  166. TAdresyIP tempadr;
  167. tempadr.suma = 0;
  168.  
  169.  
  170. sockaddr_in Addr = Th.Zwrocklient();
  171.  
  172. Addr.sin_family = AF_INET;
  173. Addr.sin_port = htons (5000);
  174. Addr.sin_addr.s_addr = htonl (INADDR_ANY);
  175.  
  176. // wynik = bind( Client,( SOCKADDR * )&Addr , sizeof( Addr ) );
  177. wynik = bind( Client,( SOCKADDR * )&Th.Zwrocklient() , sizeof (Th.Zwrocklient()));
  178.  
  179. if( wynik == SOCKET_ERROR )
  180. {
  181. printf( "bind() failed.\n" );
  182. closesocket( Client );
  183. return 1;
  184. }
  185.  
  186.  
  187. while (true)
  188. {
  189. Random = 1+ (rand()%20);
  190.  
  191. // if (getch() == VK_ESCAPE) break;
  192.  
  193. int X = _kbhit();
  194. if (X!=0)
  195. {
  196. X=1;
  197. }
  198.  
  199. itoa (Random,wyslanymsg,10);
  200. char* wyslanymsg = "AB";
  201. /* int wynik = sendto (Client,wyslanymsg,strlen(wyslanymsg),0,(SOCKADDR*)&Th.Zwrocserwer(), sizeof(Th.Zwrocserwer() ) );
  202. if (wynik == INVALID_SOCKET)
  203. {
  204. cout <<"Blad wysylania nr:" << WSAGetLastError();
  205. shutdown (Client,2);
  206. closesocket (Client);
  207. getch();
  208. return 1;
  209. }
  210. */
  211. // AddrSize = sizeof (Th.Zwrocklient());
  212.  
  213.  
  214.  
  215.  
  216. /*
  217. if( bind( Client,( SOCKADDR * ) &Th.Zwrocserwer(), sizeof( &Th.Zwrocserwer() ) ) == SOCKET_ERROR )
  218. {
  219. printf( "bind() failed.\n" );
  220. closesocket( Client );
  221. return 1;
  222. }
  223. */
  224.  
  225. //sockaddr_in
  226. Addr = Th.Zwrocklient();
  227.  
  228. Addr.sin_family = AF_INET;
  229. Addr.sin_port = htons (5000);
  230. Addr.sin_addr.s_addr = htonl (INADDR_ANY);
  231. //sockaddr_in Addr = Th.Zwrocserwer();
  232. int AddrSize = sizeof(Th.Zwrocklient());
  233.  
  234. wynik = recvfrom (Client,buff2,buffLen,0,(SOCKADDR*)&Th.Zwrocklient(), &AddrSize );
  235. // wynik = recvfrom (Client,buff2,buffLen,0,(SOCKADDR*)&Addr,&AddrSize);
  236. if (wynik>0)
  237. {
  238. Addr = Th.Zwrocklient();
  239. // Addr = Th.rH->h_addr_list[0];
  240. // Addr = Th.rH->h_addr_list[0];
  241.  
  242.  
  243. wynik=1;
  244. }
  245. /*
  246. buff2[wynik] = 0;
  247.  
  248. if (wynik == INVALID_SOCKET)
  249. {
  250. cout <<"Blad odbeirania nr" << WSAGetLastError();
  251. shutdown (Client,2);
  252. closesocket(Client);
  253. getch();
  254. return 0;
  255. }
  256. */
  257.  
  258. /*
  259. for (int i=0; i< adresyIP.size(); i++)
  260. {
  261. if (adresyIP[i].IP == Th.ZwrocHostent().h_name) sprawdzAdres = true;
  262. }
  263.  
  264. if (!sprawdzAdres)
  265. {
  266. tempadr.IP = Th.ZwrocHostent().h_name;
  267. tempadr.suma = atoi (buff2);
  268. adresyIP.push_back(tempadr);
  269. }
  270. else
  271. {
  272. for (int i = 0; i < adresyIP.size(); i++)
  273. {
  274. if (adresyIP[i].IP == Th.ZwrocHostent().h_name)
  275. {
  276. adresyIP[i].suma += atoi(buff2);
  277. }
  278. }
  279. }
  280. for (int i = 0; i < adresyIP.size(); i++)
  281. {
  282. cout << adresyIP[i].IP << ": " << adresyIP[i].suma << endl;
  283. }
  284. */
  285. }
  286.  
  287. shutdown (Client,2);
  288. closesocket (Client);
  289. cout << "Koniec programu" << endl;
  290. getch();
  291. return 0;
  292.  
  293. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment