Advertisement
Guest User

SORTOWANIE_TRUDNE

a guest
May 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <string>
  3. #include <stdio.h>
  4. #include <cstdio>
  5. #include <iostream>
  6. #include <time.h>
  7. #include <winsock.h>
  8. #include <conio.h>
  9. #include <vector>
  10. #include <locale.h>
  11. #pragma comment(lib, "ws2_32.lib")
  12. using namespace std;
  13.  
  14. void wyswietl(const int *tab, const int n)
  15. {
  16.  
  17. for (int i = 0; i < n; i++)
  18. {
  19. cout << tab[i] << endl;
  20. }
  21. }
  22.  
  23. void sortuj(int *tab, const int size, const int znak)
  24. {
  25. if (znak > 0)
  26. for (int i = size - 1; i >= 0; i--)
  27. {
  28. int temp = tab[0];
  29. int id = 0;
  30. for (int j = 0; j <= i; j++)
  31. {
  32. if (temp < tab[j])
  33. {
  34. temp = tab[j];
  35. id = j;
  36. }
  37. }
  38. tab[id] = tab[i];
  39. tab[i] = temp;
  40. }
  41.  
  42. else if (znak <= 0)
  43. for (int i = size - 1; i >= 0; i--)
  44. {
  45. int temp = tab[0];
  46. int id = 0;
  47. for (int j = 0; j <= i; j++)
  48. {
  49. if (temp > tab[i])
  50. {
  51. temp = tab[i];
  52. id = j;
  53. }
  54. }
  55. tab[id] = tab[i];
  56. tab[i] = temp;
  57. }
  58. }
  59.  
  60. void receiveAllData(int size, int additional, char* buffer, int bufferSize, SOCKET s)
  61. {
  62. // zabezpieczenie przed danymi, ktore moga przyjsc w jednej paczce
  63. int received = additional;
  64.  
  65. while (received < size * sizeof(int))
  66. {
  67. int res = recv(s, buffer, bufferSize, 0);
  68. buffer += res;
  69. received += res;
  70. bufferSize -= res;
  71.  
  72. printf("Skladanie danych, odebrano: %d, w sumie: %d\n", res, received);
  73. }
  74.  
  75. printf("\n");
  76. }
  77.  
  78. int main()
  79. {
  80. setlocale(LC_ALL, "polish");
  81. WSADATA Data;
  82. WSAStartup(MAKEWORD(2, 2), &Data);
  83. sockaddr_in Adr;
  84. //Adr.sin_addr.s_addr = inet_addr("192.168.0.104");
  85. Adr.sin_addr.s_addr = inet_addr("127.0.0.1");
  86. Adr.sin_port = htons(7700);
  87. Adr.sin_family = AF_INET;
  88.  
  89. SOCKET s;
  90. s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  91. int iResult;
  92. if (connect(s, (SOCKADDR*)&Adr, sizeof(Adr)) < 0)
  93. {
  94. cout << "Blad w polaczeniu do serwera: " << WSAGetLastError();
  95. _getch();
  96. shutdown(s, 2);
  97. closesocket(s);
  98. WSACleanup();
  99. return 0;
  100. }
  101. char buff[256] = { 0 };
  102. int len = recv(s, buff, sizeof(buff), 0);
  103.  
  104. buff[len] = '\0';
  105. cout << buff << endl;
  106.  
  107. if (buff[0] == '4')
  108. {
  109. cout << "Blad w polaczeniu do serwera: " << WSAGetLastError();
  110. _getch();
  111. shutdown(s, 2);
  112. closesocket(s);
  113. WSACleanup();
  114. return 0;
  115. }
  116.  
  117. signed char znak;
  118.  
  119. do
  120. {
  121. send(s, "SORT\r\n", strlen("SORT\r\n"), 0);
  122.  
  123.  
  124. /*char buff[1024];
  125.  
  126. int res = recv(s, buff, sizeof(buff), 0);
  127.  
  128. signed char size = buff[0];
  129.  
  130. int zmienna = abs(size);*/
  131.  
  132. //receiveAllData(zmienna, res-1, buff, sizeof(buff) - 1, s);
  133.  
  134. char buff[1024];
  135.  
  136. int res = recv(s, (char*)&znak, sizeof(znak), 0);
  137.  
  138. signed char size = znak;
  139.  
  140. int zmienna = abs(size);
  141.  
  142.  
  143. receiveAllData(zmienna, res, buff, sizeof(buff), s);
  144.  
  145.  
  146. printf("Liczba elementow: %d\n", size);
  147.  
  148. if (size == 0)
  149. return false;
  150.  
  151. int* liczby = (int*)buff;
  152.  
  153.  
  154. for (int i = 0; i < zmienna; i++)
  155. {
  156. printf("%d, ", liczby[i]);
  157.  
  158. }
  159.  
  160. printf("\nDane po sortowaniu\n");
  161. sortuj(liczby, zmienna, size);
  162. wyswietl(liczby, zmienna);
  163.  
  164. iResult = send(s, (char*)liczby, sizeof(liczby)*zmienna, 0);
  165. if (iResult == SOCKET_ERROR) {
  166. printf("send failed: %d\n", WSAGetLastError());
  167. closesocket(s);
  168. WSACleanup();
  169. return 1;
  170. }
  171.  
  172. _getch();
  173. } while (true);
  174.  
  175. _getch();
  176. shutdown(s, 2);
  177. closesocket(s);
  178. WSACleanup();
  179. return 0;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement