TCP- сервер получение файла на клиент

346
23 мая 2017, 03:58

У меня есть TCP-сервер и TCP-клиент. Клиент передает сообщение и получает в ответ ту же строку. Что нужно изменить, чтоб возвращал сервера файл. То есть я указываю в клиенте имя файла, а сервер мне его возвращает, а если его нету, то сообщение о том что его нету.

Клиентская часть.

// Шаг 4 - чтение и передача сообщений
    int nsize;
    while ((nsize = recv(my_sock, &buff[0],
        sizeof(buff) - 1, 0))
        != SOCKET_ERROR)
    {
        // ставим завершающий ноль в конце строки 
        buff[nsize] = 0;
        // выводим на экран 
        printf("S=>C:%s", buff);
        // читаем пользовательский ввод с клавиатуры
        printf("S<=C:"); fgets(&buff[0], sizeof(buff) - 1,
            stdin);
        // проверка на "quit"
        if (!strcmp(&buff[0], "quit\n"))
        {
            // Корректный выход
            printf("Exit...");
            closesocket(my_sock);
            WSACleanup();
        return 0;
    }
    // передаем строку клиента серверу
    send(my_sock, &buff[0], nsize, 0);
}

Серверная часть

    DWORD WINAPI SexToClient(LPVOID client_socket)
{
    SOCKET my_sock;
    my_sock = ((SOCKET *)client_socket)[0];
    char buff[20 * 1024];
#define sHELLO "SOCKET PODKLUCHEN\r\n"
    // отправляем клиенту приветствие
    send(my_sock, sHELLO, sizeof(sHELLO), 0);
    // цикл эхо-сервера: прием строки от клиента и возвращение ее клиенту
    int bytes_recv;
    while ((bytes_recv = recv(my_sock, &buff[0], sizeof(buff), 0)) &&
        bytes_recv != SOCKET_ERROR)
        send(my_sock, &buff[0], bytes_recv, 0);
    // если мы здесь, то произошел выход из цикла по причине
    // возращения функцией recv ошибки - соединение с клиентом разорвано
    nclients--; // уменьшаем счетчик активных клиентов
    printf("-disconnect\n"); PRINTNUSERS
        // закрываем сокет
        closesocket(my_sock);
    return 0;
}
READ ALSO
Удаление строк из файла

Удаление строк из файла

Понятия не имею с чего начать, буду очень благодарен если кто нибудь поможетВот начало кода, что писать дальше не знаю:

362
перевод из char[] в string

перевод из char[] в string

Есть строка

296
Определение города посетителя

Определение города посетителя

Необходимо узнать город посетителяНеобязательно знать район и другие подробности, а просто город

288