Advertisement
Falexom

Untitled

May 24th, 2023 (edited)
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <winsock2.h>
  6. #include <windows.h>s
  7. #include <ws2tcpip.h>
  8. #include "cryptools.h"
  9.  
  10. #pragma comment(lib, "Ws2_32.lib")
  11. #pragma warning(disable:4996)
  12.  
  13. #define port 0x1A0A
  14. #define address 0x0100007f
  15.  
  16. void closeALL(SOCKET sock)
  17. {
  18. closesocket(sock);
  19. WSACleanup();
  20. return;
  21. }
  22.  
  23.  
  24. int main()
  25. {
  26. WSADATA wsaData;
  27. int res, resSend;
  28. SOCKET currentSocket = INVALID_SOCKET;
  29. SOCKET clientSocket = INVALID_SOCKET;
  30. char buf[1024];
  31.  
  32.  
  33. res = WSAStartup(MAKEWORD(2, 2), &wsaData); // основа
  34.  
  35. if (res != 0)
  36. {
  37. printf("Startup error!\n");
  38. return 1;
  39. }
  40.  
  41. currentSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // сокет сервера пока нет клиента
  42.  
  43. if (currentSocket == INVALID_SOCKET)
  44. {
  45. printf("Socket error!\n");
  46. WSACleanup();
  47. return 1;
  48. }
  49.  
  50. int val = 1;
  51. setsockopt(currentSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val));
  52.  
  53. struct sockaddr_in serverAddress;
  54. serverAddress.sin_family = AF_INET;
  55. serverAddress.sin_addr.s_addr = address;
  56. serverAddress.sin_port = port;
  57.  
  58.  
  59. if (bind(currentSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress))) // бинд
  60. {
  61. printf("Bindind failed!\n");
  62. closeALL(currentSocket);
  63. return 1;
  64. }
  65.  
  66.  
  67. if (listen(currentSocket, SOMAXCONN) == SOCKET_ERROR)
  68. {
  69. printf("Unexpected socker error!\n");
  70. closeALL(currentSocket);
  71. return 1;
  72. }
  73.  
  74. clientSocket = accept(currentSocket, NULL, NULL); // клиент прилетел
  75. if (clientSocket == INVALID_SOCKET)
  76. {
  77. printf("Invalid client socket!\n");
  78. closeALL(currentSocket);
  79. return 1;
  80. }
  81. printf("Ok\n");
  82.  
  83. closesocket(currentSocket); // не нужен больше
  84.  
  85. do {
  86. res = recv(clientSocket, buf, 1024, 0);
  87. if (res > 0)
  88. {
  89. printf("%d", strlen(buf));
  90. char* encryptedText = NULL;
  91. encryptedText = (char*)malloc(sizeof(buf) * 100);
  92. strcpy(encryptedText, Encryption(buf));
  93. resSend = send(clientSocket, encryptedText, strlen(encryptedText), 0);
  94. free(encryptedText);
  95. encryptedText = NULL;
  96. if (resSend == SOCKET_ERROR)
  97. {
  98. closeALL(clientSocket);
  99. return 1;
  100. }
  101.  
  102. }
  103. else if (resSend == 0)
  104. printf("Connection closing...\n");
  105. else {
  106. printf("recv failed\n");
  107. closeALL(clientSocket);
  108. return 1;
  109. }
  110.  
  111. } while (res > 0);
  112.  
  113. res = shutdown(clientSocket, SD_SEND);
  114. if (res == SOCKET_ERROR) {
  115. printf("shutdown failed with error: %d\n", WSAGetLastError());
  116. closeALL(clientSocket);
  117. return 1;
  118. }
  119.  
  120.  
  121. closeALL(clientSocket); // сворачиваемся
  122.  
  123. return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement