Advertisement
VladimirKostovsky

client_not_me

Oct 6th, 2024
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.98 KB | None | 0 0
  1. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  2. #define _CRT_SECURE_NO_WARNINGS
  3.  
  4. #pragma comment(lib, "Ws2_32.lib")
  5. #include <stdio.h>
  6. #include <winsock2.h>
  7. #include <string>
  8. #include <iostream>
  9. using namespace std;
  10.  
  11. int main() {
  12.     WORD ver = MAKEWORD(2, 2);
  13.     WSADATA wsaData;
  14.     int retVal = 0;
  15.     WSAStartup(ver, (LPWSADATA)&wsaData);
  16.  
  17.     // Создаем сокет
  18.     SOCKET clientSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  19.     if (clientSock == SOCKET_ERROR) {
  20.         printf("Unable to create socket\n");
  21.         WSACleanup();
  22.         return 1;
  23.     }
  24.  
  25.     string ip;
  26.     cout << "ip> ";
  27.     cin >> ip;
  28.     cin.ignore();  // Очистка буфера после ввода IP
  29.  
  30.     SOCKADDR_IN serverInfo;
  31.     serverInfo.sin_family = PF_INET;
  32.     serverInfo.sin_addr.S_un.S_addr = inet_addr(ip.c_str());
  33.     serverInfo.sin_port = htons(2009);
  34.  
  35.     // Присоединение к серверу
  36.     retVal = connect(clientSock, (LPSOCKADDR)&serverInfo, sizeof(serverInfo));
  37.     if (retVal == SOCKET_ERROR) {
  38.         printf("Unable to connect\n");
  39.         WSACleanup();
  40.         return 1;
  41.     }
  42.  
  43.     printf("Connection made successfully\n");
  44.  
  45.     string input;
  46.     char pBuf[256] = { 0 };
  47.     while (true) {
  48.         // Ввод строки текста от пользователя
  49.         printf("Enter the text, placing dots at the end of each sentence (or 'exit' to quit): ");
  50.         getline(cin, input);
  51.  
  52.         if (input == "exit") {
  53.             // Отправляем на сервер команду выхода, но не закрываем сразу клиент
  54.             retVal = send(clientSock, input.c_str(), input.length(), 0);
  55.             if (retVal == SOCKET_ERROR) {
  56.                 printf("Unable to send\n");
  57.                 WSACleanup();
  58.                 return 1;
  59.             }
  60.  
  61.             printf("Closing client connection...\n");
  62.             break;  // Выходим из цикла, завершаем клиент
  63.         }
  64.  
  65.         // Проверка на слишком длинную строку
  66.         if (input.length() > 255) {
  67.             cout << "Input is too long. Please enter a shorter sentence." << endl;
  68.             continue;
  69.         }
  70.  
  71.         // Отправка строки на сервер
  72.         retVal = send(clientSock, input.c_str(), input.length(), 0);
  73.         if (retVal == SOCKET_ERROR) {
  74.             printf("Unable to send\n");
  75.             WSACleanup();
  76.             return 1;
  77.         }
  78.  
  79.         // Ожидание ответа от сервера
  80.         char szResponse[256] = { 0 };
  81.         retVal = recv(clientSock, szResponse, sizeof(szResponse), 0);
  82.         if (retVal == SOCKET_ERROR) {
  83.             printf("Unable to receive\n");
  84.             WSACleanup();
  85.             return 1;
  86.         }
  87.  
  88.         // Печать ответа от сервера
  89.         printf("Server response: %s\n", szResponse);
  90.     }
  91.  
  92.     closesocket(clientSock);
  93.     WSACleanup();
  94.     return 0;
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement