Как серверу принять n-e количество чисел?

Хочу сделать так: клиент вводит, сколько чисел он хочет передать серверу. Дальше он вводит нужное количество чисел, и сервер их получает и выводит.

Я пытался реализовать это так: Код сервера

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment (lib, "ws2_32.lib")
 
#include <winsock2.h>
#include <iostream>
#include<string>
using namespace std;
 
char buff[256];
 
int main()
{
    setlocale(LC_ALL, "rus");
    WSADATA wsaData;
    SOCKET serverSocket, clientSocket;
    sockaddr_in serverAddr, clientAddr;
    int clientAdressSize = sizeof(clientAddr);
    
    int number;
 
    WSAStartup(MAKEWORD(2, 2), &wsaData);
 
    serverSocket = socket(AF_INET, SOCK_STREAM, 0);
 
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(8080);
 
    bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
 
    listen(serverSocket, 1);
 
    
 
    clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAdressSize);
    recv(clientSocket, buff, sizeof(buff), 0);
    cout<<"Должно быть передано " << buff<<"числа" << endl;
    int count = int(buff);
    
 
 
    for (int i = 1;i < count;i++)
    {
 
        recv(clientSocket, buff, sizeof(buff), 0);
        cout << buff <<  endl;
 
    }
    
 
   
 
    return 0;
}

Код клиента:


#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment (lib, "ws2_32.lib")
#include<string>
#include <winsock2.h>
#include <iostream>
#define _CRT_SECURE_NO_WARNING
using namespace std;
 
 
char buff[256];
int main()
{
    setlocale(LC_ALL, "rus");
    WSADATA wsaData;
    SOCKET clientSocket;
    sockaddr_in serverAddr;
 
 
    WSAStartup(MAKEWORD(2, 2), &wsaData);
 
    clientSocket = socket(AF_INET, SOCK_STREAM, 0);
 
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(8080);
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
 
    connect(clientSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
 
    int count;
    cout << "Напишите, сколько чисел передать серверу: ";
    cin >> count;
    send(clientSocket,to_string(count).c_str(),sizeof(to_string(count)),0);
    
    for (int i = 0;i < count;i++)
    {
        int n;
        cout << "Введите число: ";
        cin >> n;
        send(clientSocket, to_string(n).c_str(), sizeof(to_string(count)), 0);
    }
    
 
   
 
   strcpy_s(buff,order.c_str());
   
    send(clientSocket, buff, sizeof(buff), 0);*/
 
    return 0;
}

Однако мое решение не сработало: сервер не выводит присланные ему числа. Что можно сделать, чтобы сервер принял n-е количество чисел?


Ответы (0 шт):