|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
||||||
Передача содержимого от сервера клиенту или наоборот через TCP20.11.2018, 03:19. Показов 5112. Ответов 20
Метки нет (Все метки)
Вопрос на засыпку.
Есть сервер который должен например передать фотографию клиенту или какой то огромный текст, мы знаем что можно передать только байтами содержимое и мы знаем что есть максимальное количество байт которое можно передать по каналу оно 1500 байт. Вопрос такой когда я посылаю например фотографию целиком не разбивая массив байтов таким образом
заранее спасибо!
0
|
||||||
| 20.11.2018, 03:19 | |
|
Ответы с готовыми решениями:
20
Передача сообщения с сервера клиенту Как отправить byte[] с сервера клиенту через socket Передача изображения от сервера к клиенту |
|
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
|
|||
| 20.11.2018, 06:17 | |||
|
0
|
|||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|
| 20.11.2018, 08:44 [ТС] | |
|
Т.е в моём случае код делает снимок экран соответственно конвертирую в байтовый массив. И просто отправляю через socket.Send() там работу дальше уже TCP делает? Потому что я например с текстом задолбался разбивать он муссор типа такого \0\0 гонит в строку
И сэтим ничего не возможно сделать. А где можно прочитать про то как в c# байты разбиваются на пакеты? Заранее спасибо!
0
|
|
|
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
|
||||
| 20.11.2018, 10:53 | ||||
Сообщение было отмечено FerrariF70 как решение
РешениеSocket.Receive значение реально прочитанных байт вы не проверяете и не учитываете, так ведь?Добавлено через 1 минуту
1
|
||||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|||||||||||||||||||||
| 20.11.2018, 19:29 [ТС] | |||||||||||||||||||||
|
Usaga
насчёт Socket.Receive() мусор начал появляться в сообщениях потому что я на стороне сервера разбивал массив байтов на пакеты и отправлял их а на стороне клиента я их собирал обратно в байтовый массива. Но перед тем как я начал разбивать просто посылал буффер таким образом на сервере посылаю:
мусор как таковой не виден в консоле только если через отладчик он виден но всё равно это создаёт много проблем.
0
|
|||||||||||||||||||||
|
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
|
||
| 21.11.2018, 06:59 | ||
Сообщение было отмечено FerrariF70 как решение
РешениеTypeDescriptor.GetConverter(bitmap).ConvertTo, если у Bitmap есть метод Save?На буферы разбивают не для того, чтобы TCP облегчить передачу данных, а для того, чтобы не пихать в оперативку заведомо конское количество данных. В вашем случае, рисунок уже в оперативке и буфер с его содержимым можно сразу передать методу Socket.Send. Но если бы рисунок поднимался с диска, то разумнее было бы читать его порциями по N килобайт, чтобы не захламлять память.Вот это вообще бомба: socket.Send(ascii.GetBytes(data.Length.ToString()));.
1
|
||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|||
| 22.11.2018, 09:01 [ТС] | |||
0
|
|||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|
| 22.11.2018, 23:26 [ТС] | |
|
Usaga возможно ли как то вообще уведомить клиента какой размер байтов я ему отсылаю?
0
|
|
|
|
||
| 23.11.2018, 00:16 | ||
|
Вы передаете длину пакета, например int - 4 байта. Клиент читает первые 4 байта, преобразует в int. И далее читает нужно число байт из сокета.
1
|
||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|
| 23.11.2018, 02:48 [ТС] | |
|
Storm23, понятно и тут мы вернулись к началу как я и вначале разбивал на пакеты.Спасибо!
0
|
|
|
|
||
| 23.11.2018, 02:55 | ||
|
И да, в этом контексте пакет это не тоже самое что пакет TCP. Пакеты на которые разобьет TCP вас вообще не должно волновать. В данном контексте пакет - это просто блок передаваемых данных, который клиент должен принять целиком, перед началом обработки.
0
|
||
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
||||||
| 23.11.2018, 03:00 [ТС] | ||||||
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 23.11.2018, 03:07 | |
|
0
|
|
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
|||||||
| 23.11.2018, 19:06 [ТС] | |||||||
|
моё решение сработало отлично
0
|
|||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 23.11.2018, 20:07 | |
|
0
|
|
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
||
| 23.11.2018, 20:10 [ТС] | ||
|
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 23.11.2018, 20:12 | |
|
Я написал как отправлять. А вы на клиенте не правильно делаете (число зачем-то в строку переводите...), про это я ничего не писал...
0
|
|
|
17 / 14 / 7
Регистрация: 04.02.2017
Сообщений: 486
|
||||||
| 23.11.2018, 20:19 [ТС] | ||||||
я уже написал что я делал вашим способом и он бред выдавал вы хотите скрин чтоб убедится или что?
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||||||||
| 23.11.2018, 20:49 | ||||||||
И вообще проще было бы использовать TcpClient/TcpListener/NetworkStream/BinaryReader/BinaryWriter чем мудохаться с этим сокетом и вручную разбирать пакеты...
0
|
||||||||
|
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
|
|
| 24.11.2018, 06:37 | |
|
FerrariF70, я вам тоже не рекомендую использовать голый TCP раз уж вы с трудом понимаете, что делаете. Это довольно низкоуровневая штука. Вот тут разбираются правильные практики работы с TCP. В самом конце статьи есть полный пример корректной работы с TCP, учитывающий фрагментирование пакетов и прочие вещи. Обратите внимание, что этот пример вообще ниразу не так прост.
Если вы использовали TCP не потому, что вам нужна вся эта низкоуровневая мишура, а просто потому, что это первое, что вам попалось, то возьмите что-то другое. Что-то из надстроек, что выше Someone007 порекомендовал. Или ещё более высокоуровневые вещи типа WCF.
0
|
|
| 24.11.2018, 06:37 | |
|
Помогаю со студенческими работами здесь
20
Передача ошибки из библиотеки DAL со стороны сервера к клиенту Передача динамических данных с сервера на клиент по TCP/IP Как отправить ответ клиенту с сервера TCP?
Передача данных из сервера к клиенту или наоборот Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|