Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 10.01.2015
Сообщений: 69

Отправка сразу несколько пакетов. WinSock

10.08.2015, 18:12. Показов 1298. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привествую всех.

В вообщем так.

Программа ищет на компьютере разную информацию с разных адресов и отправляет её через send().
Вторая программа, в свою очередь получает эти данные.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
                        char buffer[2048];
                        while ((readBytes = recv(clientSocket, buffer, sizeof(buffer), 0)) > 0)
                        {
                            //printf("%d", readBytes);
                            printf("1)%d,%d\n", readBytes, strlen(buffer));
                            buffer[readBytes] = 0;
                            printf("2)%d,%d\n", readBytes, strlen(buffer));
                            int j = fputs(buffer, f);
                            int size = ftell(f);
                            printf("%d,%d - %s\n", readBytes, strlen(buffer), buffer);
                            buffer[0] = 0;
                        }
Вот код получения.
Send, я думаю нет смысла отсылать. Там всё отсылается друг за другом разного размера.

Такая проблема:
Отсылается всё. Приходит всё, НО может прийти как-то не корректно.
Тоесть так:

Первый раз отослано к примеру 100 байт, пришло 100 байт.
Во второй раз отослано 120 байт, пришло 150 байт. Откуда лишние байты? Как исправить?
До третьего раза программа просто не доходит, так как происходит вылет из за предела массива.
Тестил через отладчик. так и получается..

Тоесть, насколько я понял, первые данные не все успевают прийти, а уже идут другие..хотя..странно.
Просьба помочь, пожалуйста!

P.S. данные отсылаются размера меньше, чем размер буффера!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2015, 18:12
Ответы с готовыми решениями:

Отправка пакетов на открытый сокет WinSock 1.1
Здравствуйте форумчане. И так, мы имеем клиент, который отправляет и принимает пакеты от сервера. После запуска клиента, мы узнали ид...

Отправка файла (HTTP+Winsock)
Добрый вечер. Опять столкнулся с проблемой, которую без вашей помощи не разрешить. Суть дела - пишу программу для загрузки графических...

Прием и отправка пакетов
Всем привет! Нужно отправить определенной структуры пакет серверу на порт 28000. Так выглядит структура пакета: ...

6
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 18:30
Цитата Сообщение от KrYpToDeN Посмотреть сообщение
Тоесть, насколько я понял, первые данные не все успевают прийти, а уже идут другие..хотя..странно.
В TCP порядок пакетов соблюдается. Данные у тебя перемешиваться не будут. А что у тебя в этих "лишних" байтах?
Проверь через wireshark, что за данные приходят на порт и какие отправлены.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
10.08.2015, 18:36
Цитата Сообщение от KrYpToDeN Посмотреть сообщение
Во второй раз отослано 120 байт, пришло 150 байт. Откуда лишние байты?
Ну например, 120 байт второй отправки плюс 30 байт третьей. В TCP это типично.

Цитата Сообщение от KrYpToDeN Посмотреть сообщение
До третьего раза программа просто не доходит, так как происходит вылет из за предела массива.
Для работы strlen нужно, чтобы буфер заканчивался нулем.
1
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 18:39
Цитата Сообщение от KrYpToDeN Посмотреть сообщение
данные отсылаются размера меньше, чем размер буффера!
Читаешь ты все равно столько, сколько сможешь (или сколько хочешь). А не по тому размеру, по которому ты отправлял их.
1
3 / 3 / 1
Регистрация: 10.01.2015
Сообщений: 69
10.08.2015, 19:12  [ТС]
оо исправил, изменив
PHP
1
while ((readBytes = recv(clientSocket, buffer, sizeof(buffer), 0)) > 0)
на
PHP
1
while ((readBytes = recv(clientSocket, buffer, sizeof(buffer)-1, 0)) > 0)
Всем спасибо за советы)

Тоесть насколько я понял,
Придёт же в том же порядке, в каком отправил? могут ли быть несовпадения?
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
10.08.2015, 19:15
Цитата Сообщение от KrYpToDeN Посмотреть сообщение
могут ли быть несовпадения?
Что понимать под "несовпадениями"?
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 19:21
Цитата Сообщение от KrYpToDeN Посмотреть сообщение
Придёт же в том же порядке, в каком отправил?
Да. Только ты не узнаешь, какими порциями ты их посылал.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2015, 19:21
Помогаю со студенческими работами здесь

(Winsock) Сервер - Несколько клиентов
В msdn есть пример создания сервера, который принимает 1 соединение. Не могу врубиться, как сделать, чтобы к серваку подключалось...

Отправка UDP пакетов с задержкой в 5 мкс
Здравствуйте.Как раз не давно с толкнулся с проблемой реализации отправки UDP пакетов с задержкой в 5 мкс.Хотел использовать функцию...

Отправка на несколько сайтов сразу
Есть код который отправляет POST запрос на определенный сайт, теперь надо следующее... Нужно отправить POST запросы с этими данными но на...

Winsock: перенаправление пакетов
Здравствуйте, подскажите, как заставить Winsock перенаправлять пакеты. Например ко мне поступает пакет на порт 2000, я хочу его пере...

Winsock отправка файлов.
Доброе время суток! пишу клиент.серв приложение с использованием winsock'a вот собно клиен.часть //функция принмает сокет + путь к...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru