Advertisement
Guest User

Untitled

a guest
Dec 7th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "Server.h"
  3. #include <cstdlib>
  4. #include <cstdio>
  5. #include <ctime>
  6.  
  7.  
  8. int main()
  9. {
  10. srand(time(NULL));
  11. Server S;
  12. S.main();
  13. return 0;
  14. }
  15.  
  16. void Server::main() {
  17.  
  18. std::cout << "Nasluchiwanie.." << std::endl;
  19.  
  20. //------------------------------------------Laczenie
  21.  
  22. ip = sf::IpAddress::IpAddress("127.0.0.1");
  23. listener.listen(2000);
  24. listener.accept(socket);
  25. std::cout << "Polaczono" << std::endl;
  26.  
  27. //------------------------------------------Laczenie
  28.  
  29. Prep_ID();
  30. socket.send(msg, 64);
  31. ClearPacket();
  32. std::cout << "Wyslano IP" << std::endl;
  33. ShowPacket();
  34. std::cout << std::endl;
  35.  
  36. //------------------------------------------Praca
  37.  
  38. while (Status != "Stop_") {
  39. Odbior_pakietu();
  40. std::cout << "Odebrano pakiet" << std::endl;
  41. ShowPacket();
  42. std::cout << std::endl;
  43. if (Status == "Stop_") {
  44. socket.disconnect();
  45. return;
  46. }
  47. else {
  48. Wyluskanie_dzialania();
  49. }
  50. }
  51.  
  52. }
  53.  
  54. void Server::Prep_ID() {
  55. int r = rand() % 9 + 1;
  56. Odp = "Witaj";
  57. Status = "dajID";
  58. ID = "0";
  59. Czas = datowanie();
  60. Dane = "000000000" + std::to_string(r);
  61. Packing();
  62. }
  63. void Server::Prep_result() {
  64. ID = "0";
  65. Czas = datowanie();
  66. std::string temp;
  67. temp = std::to_string(wynik);
  68. Dane = "";
  69. if (wynik > 0) {
  70. if (temp.size() <= 10) {
  71. int ilosc_zer = 10 - temp.size();
  72. for (int i = ilosc_zer; i > 0; i--) {
  73. Dane += "0";
  74. }
  75. Dane += temp;
  76. Status = "Wynik";
  77. }
  78. else {
  79. Status = "Error";
  80. Dane = " ";
  81. }
  82. }
  83. else {
  84. if (temp.size() <= 9) {
  85. int ilosc_zer = 9 - temp.size();
  86. for (int i = ilosc_zer; i > 0; i--) {
  87. Dane += "0";
  88. }
  89. Dane += temp;
  90. Status = "Wynik";
  91. }
  92. else {
  93. Status = "Error";
  94. Dane = " ";
  95. }
  96. }
  97. Packing();
  98. }
  99. void Server::Odbior_pakietu() {
  100. socket.receive(msg, 64, received);
  101. Unpacking();
  102. }
  103. void Server::Wyluskanie_liczb() {
  104. int cnt = 0;
  105. for (int i = 0; i < 5; i++) {
  106. if (Dane[i] == '0') {
  107. cnt++;
  108. }
  109. else { break; }
  110. }
  111. l1 = std::stoi(Dane.substr(cnt, 5 - cnt));
  112. cnt = 0;
  113. for (int i = 5; i < 10; i++) {
  114. if (Dane[i] == '0') {
  115. cnt++;
  116. }
  117. else { break; }
  118. }
  119. l2 = std::stoi(Dane.substr(5 + cnt, 5 - cnt));
  120. }
  121. void Server::Wyluskanie_dzialania() {
  122. if (Odp == "Dodaj") {
  123. Wyluskanie_liczb();
  124. wynik = dodaj(l1, l2);
  125. Prep_result();
  126. std::cout << "Wyslano pakiet" << std::endl;
  127. ShowPacket();
  128. std::cout << std::endl;
  129. socket.send(msg, 64);
  130. ClearPacket();
  131. }
  132. else if (Odp == "odejm") {
  133. Wyluskanie_liczb();
  134. wynik = odej(l1, l2);
  135. Prep_result();
  136. std::cout << "Wyslano pakiet" << std::endl;
  137. ShowPacket();
  138. socket.send(msg, 64);
  139. ClearPacket();
  140. }
  141. else if (Odp == "pomno") {
  142. Wyluskanie_liczb();
  143. wynik = mnoz(l1, l2);
  144. Prep_result();
  145. std::cout << "Wyslano pakiet" << std::endl;
  146. ShowPacket();
  147. socket.send(msg, 64);
  148. ClearPacket();
  149. }
  150. else if (Odp == "dziel") {
  151. Wyluskanie_liczb();
  152. wynik = dziel(l1, l2);
  153. Prep_result();
  154. std::cout << "Wyslano pakiet" << std::endl;
  155. ShowPacket();
  156. socket.send(msg, 64);
  157. ClearPacket();
  158. }
  159. else if (Odp == "poteg") {
  160. Wyluskanie_liczb();
  161. wynik = poteg(l1, l2);
  162. Prep_result();
  163. std::cout << "Wyslano pakiet" << std::endl;
  164. ShowPacket();
  165. socket.send(msg, 64);
  166. ClearPacket();
  167. }
  168. else if (Odp == "pierw") {
  169. Wyluskanie_liczb();
  170. wynik = pierw(l1, l2);
  171. Prep_result();
  172. std::cout << "Wyslano pakiet" << std::endl;
  173. ShowPacket();
  174. socket.send(msg, 64);
  175. ClearPacket();
  176. }
  177. else if (Odp == "modul") {
  178. Wyluskanie_liczb();
  179. wynik = mod(l1, l2);
  180. Prep_result();
  181. std::cout << "Wyslano pakiet" << std::endl;
  182. ShowPacket();
  183. socket.send(msg, 64);
  184. ClearPacket();
  185. }
  186. else if (Odp == "Nwd__") {
  187. Wyluskanie_liczb();
  188. wynik = NWD(l1, l2);
  189. Prep_result();
  190. std::cout << "Wyslano pakiet" << std::endl;
  191. ShowPacket();
  192. socket.send(msg, 64);
  193. ClearPacket();
  194. }
  195. else if (Odp == "Silni") {
  196. l1 = std::stoi(Dane.substr(0, 4));
  197. wynik = silnia(l1);
  198. Prep_result();
  199. std::cout << "Wyslano pakiet" << std::endl;
  200. ShowPacket();
  201. socket.send(msg, 64);
  202. ClearPacket();
  203. }
  204. }
  205.  
  206. void Server::Packing() {
  207. std::string temp;
  208. temp += "#1:O=" + Odp + "+";
  209. temp += "#2:S=" + Status + "+";
  210. temp += "#3:I=" + ID + "+";
  211. temp += "#4:C=" + Czas + "+";
  212. temp += "#5:D=" + Dane + "+";
  213.  
  214. std::rotate(temp.begin(), temp.begin() + 1, temp.end());
  215. for (int i = 0; i <64; i++) {
  216. msg[i] = temp[i];
  217. }
  218. }
  219. void Server::Unpacking() {
  220. std::string temp;
  221.  
  222. for (int i = 0; i<64; i++) {
  223. temp += msg[i];
  224. }
  225. Odp = temp.substr(12, 5);
  226. Status = temp.substr(28, 5);
  227. ID = temp.substr(51, 1);
  228. Czas = temp.substr(61, 14);
  229. Dane = temp.substr(84, 10);
  230. }
  231. void Server::ClearPacket() {
  232. Odp = " ";
  233. Status = " ";
  234. ID = "0";
  235. Czas = " ";
  236. Dane = " ";
  237. }
  238. void Server::ShowPacket() {
  239. for (int i = 0; i <64; i++) {
  240. std::cout << msg[i];
  241. }
  242. std::cout << std::endl;
  243. }
  244.  
  245. int Server::dodaj(int x, int y)
  246. {
  247. return x + y;
  248. }
  249. int Server::odej(int x, int y)
  250. {
  251. return x - y;
  252. }
  253. int Server::mnoz(int x, int y)
  254. {
  255. return x * y;
  256. }
  257. int Server::dziel(int x, int y)
  258. {
  259. return x / y;
  260. }
  261. int Server::poteg(int x, int y)
  262. {
  263. return pow(x, y);
  264. }
  265. int Server::pierw(int x, int y)
  266. {
  267. return pow(x, 1 / y);
  268. }
  269. int Server::mod(int x, int y)
  270. {
  271. return x%y;
  272. }
  273. int Server::NWD(int x, int y)
  274. {
  275. do
  276. {
  277. if (x>y) x = x - y;
  278. else y = y - x;
  279. } while (x != y);
  280. return x;
  281. }
  282.  
  283. std::string Server::datowanie() {
  284. SYSTEMTIME st;
  285. GetLocalTime(&st);
  286. std::string temp;
  287. int godzina = st.wHour;
  288. int minuta = st.wMinute;
  289. int sekunda = st.wSecond;
  290. int dzien = st.wDay;
  291. int miesiac = st.wMonth;
  292. int rok = st.wYear;
  293.  
  294. temp = std::to_string(rok);
  295. if (miesiac > 9) {
  296. temp += std::to_string(miesiac);
  297. }
  298. else if (miesiac < 10) {
  299. temp += "0";
  300. temp += std::to_string(miesiac);
  301. }
  302. if (dzien > 9) {
  303. temp += std::to_string(dzien);
  304. }
  305. else if (dzien < 10) {
  306. temp += "0";
  307. temp += std::to_string(dzien);
  308. }
  309. if (godzina > 9) {
  310. temp += std::to_string(godzina);
  311. }
  312. else if (godzina < 10) {
  313. temp += "0";
  314. temp += std::to_string(godzina);
  315. }
  316. if (minuta > 9) {
  317. temp += std::to_string(minuta);
  318. }
  319. else if (minuta < 10) {
  320. temp += "0";
  321. temp += std::to_string(minuta);
  322. }
  323. if (sekunda > 9) {
  324. temp += std::to_string(sekunda);
  325. }
  326. else if (sekunda < 10) {
  327. temp += "0";
  328. temp += std::to_string(sekunda);
  329. }
  330. return temp;
  331. }
  332.  
  333. int Server::silnia(int x) {
  334. if (x<2) return x;
  335. return x*silnia(x - 1);
  336. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement