Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 1
Регистрация: 10.05.2018
Сообщений: 20

Передача изображения Winsock

11.04.2019, 02:02. Показов 2715. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уже третий день бьюсь.
Срочно нужна ваша помощь. Хочу сделать демонстрацию экрана удаленную. Все работает отлично но буквально минуты 2 потом сервер валиться причем вроде как без ошибок. Просто не передаеться изображение

Не ругайтесь сильно, знаю что передавать все изображение это полный бред нужно как минимум фреймами и т.д. Но мне бы с этим разобраться а дальше уже допилю.
ПРИЕМ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    while (true)
    {
        //Принимаем размер изображения
        char buff[6];
        int len;
        iResult  = recv(s1, buff, 6, 0);
        size_t size = atoi(buff);
 
 
        iResult = send(s1, "1", 1, 0);
 
        //принимаем само изображение
        char* data;
        data = new char[size];
        int len1;
        iResult = recv(s1, data, size, 0);
 
 
        
 
        iResult = send(s1, "1", 1, 0);
 
 
        //Записываем изображение в файл
        size_t file_length;
        FILE* f = fopen("screen.jpg", "wb");
 
        if (f != 0) {
            fwrite(data, size, 1, f);
            if(fclose(f)!=0);
            SendMessage(ghWnd, WM_COMMAND, 6, 0);//функция рисования
            InvalidateRect(ghWnd, NULL, FALSE);
            UpdateWindow(ghWnd);
        }
        free(data);
        Sleep(100);
    }

ОТПРАВКА:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    while (true)
    {
        gdiscreen(); /создаем изображение (позже реализация в памяти)
        size_t file_length;
        FILE* f = fopen("screen.jpg", "rb");
 
        if (f != 0) {
            // получаем размер файла
            fseek(f, 0, SEEK_END);
            file_length = ftell(f);
            fseek(f, 0, SEEK_SET);
 
            if (file_length < 100)
                file_length = 6;
            char* data;
            data = new char[file_length];
 
            if (fread(data, file_length, 1, f) != 0);
            if (fclose(f) != 0);
 
 
            char p[10];
            if (_itoa(file_length, p, 10));
            iResult = send(serversa, p, 6, 0);
            if (iResult == SOCKET_ERROR)
            {
                wchar_t* s = NULL;
                FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                    NULL, WSAGetLastError(),
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    (LPWSTR)& s, 0, NULL);
                MessageBox(NULL, s, L"", MB_OK);
            }
 
 
            char *buff = new char[1];
            iResult = recv(serversa, buff, 1, 0);
 
 
 
 
            if (strlen(data) < 2)
                data = (char*)"sss";
            iResult = send(serversa, data, file_length, 0);
            if (iResult == SOCKET_ERROR)
            {
                wchar_t* s = NULL;
                FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                    NULL, WSAGetLastError(),
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    (LPWSTR)& s, 0, NULL);
                MessageBox(NULL, s, L"", MB_OK);
            }
            
            char* buff1 = new char[1];
            iResult = recv(serversa, buff1, 1, 0);
 
 
            free(data);
            free(buff1);
            free(buff);
        }
        Sleep(100);
        
    }
Добавлено через 25 минут
Почему форум по с++ умирает? Так редко стали отвечать на вопросы...

Добавлено через 5 часов 5 минут
Неужели не кто не работал с таким?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2019, 02:02
Ответы с готовыми решениями:

Передача строки (winsock)
в общем проблема в следующем - никак не могу понять каким образом передать всю строку целиком. Проблема в том, что перед передачей она...

Передача матрицы используя winsock
Здравствуйте, хочу передать двухмерную матрицу(char**) через winsock, но без успешно.Что я делаю не так? кусочек клиента (со стороны...

WinSock. Останавливается передача файла
Собственно продолжение прошлой темы, но уже с другой проблемой. Для того, чтоб пересылка всегда была полная и без потерь отправляется...

1
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
14.04.2019, 18:02
Лучший ответ Сообщение было отмечено Kuzia domovenok как решение

Решение

C++
1
2
3
4
5
6
char* buff1 = new char[1];
data = new char[file_length];
 
free(data);
free(buff1);
free(buff);
Распространенные ошибки

Добавлено через 9 минут
C++
1
2
3
4
5
6
wchar_t* s = NULL;
                FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                    NULL, WSAGetLastError(),
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    (LPWSTR)& s, 0, NULL);
                MessageBox(NULL, s, L"", MB_OK);
это
C++
1
wchar_t* s
само по себе не освободится..

C++
1
LocalFree(s);
Добавлено через 3 минуты
C++
1
2
3
if (strlen(data) < 2)
                data = (char*)"sss";
            iResult = send(serversa, data, file_length, 0);
что это?
C++
1
data = (char*)"sss";
научитесь работать со строками в С. И внимательно почитайте про указатели.

Добавлено через 1 минуту
Цитата Сообщение от Skromniy_ Посмотреть сообщение
Почему форум по с++ умирает? Так редко стали отвечать на вопросы...
Добавлено через 5 часов 5 минут
Неужели не кто не работал с таким?
Это раздел WinAPI, а не раздел для новичков в С.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2019, 18:02
Помогаю со студенческими работами здесь

Передача слова на русском языке Winsock
не могу передать слово, написанное на русском языке, выводится кракозябра :(

Передача видеопотока с вебкамеры посредством Winsock соединения
Доброго времени суток. Собственно интересует вопрос, как реализовать передачу видеопотока через winsock соединение. Видеопоток беру с...

Захват видео с веб-камеры и потоковая передача посредством WINSOCK и DirectShow
Как это лучше всего сделать? Знаю WINSOCK, по DirectShow планирую курить англ. мануалы. Вопрос в том, можно ли это сделать с помощью...

WinSock передача файлов
Пытаюсь передать файл по сети с помощью клиентной и серверной программ. Сервер передает файлы по запросу клиента. Файл записывается до...

Передача файлов через WinSock
Помогите. Возможно ли пресылать файлы по средствам WinSock?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru