Трансляция бинарных данных через Winsock

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 09.06.2005 (Чт) 4:45

tyomitch писал(а):Откуда ты это взял?

И всё это - тоже откуда? :roll:


Ночью приснилось :)
Бороться и искать, найти и перепрятать!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 09.06.2005 (Чт) 5:08

MeMBus

А почему сок не передаст нормально пакет размером в 1025 байт? Это всего на один байт больше килобайта.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 09.06.2005 (Чт) 6:02

Send File
Как статья?
Удачи!
С уважением, Алексадр.

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 09.06.2005 (Чт) 6:05

FAKK2 писал(а):MeMBus

А почему сок не передаст нормально пакет размером в 1025 байт? Это всего на один байт больше килобайта.

Да очень просто!, 1024 = 1 p, а 1025=2p.~ :D
Последний раз редактировалось Sasha_karasov 09.06.2005 (Чт) 7:07, всего редактировалось 1 раз.
Удачи!
С уважением, Алексадр.

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 09.06.2005 (Чт) 6:56

FAKK2 писал(а):MeMBus

А почему сок не передаст нормально пакет размером в 1025 байт? Это всего на один байт больше килобайта.


Он примет его, но как два пакета...
Настройка параметров TCP/IP соединений.
Исключения при выполнении:
Если значение таймоута больше 3600 сек, то принимается равным 3600 сек.
Если значение таймоута меньше 1 сек, то принимается равным 1 сек.
Если значение блока данных меньше 1 байт, то принимается равным 1 байт.
Если значение блока данных больше 65535 байт, то принимается равным 65535 байт.

Примечание:
По умолчанию используются:
Таймоут приёма: 300 сек.
Таймоут передачи: 300 сек.
Размер блока приёма: 1024 байт.
Размер блока передачи: 1024 байт.
Бороться и искать, найти и перепрятать!

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 09.06.2005 (Чт) 9:57

Таки вот, MeMBus, насчет String ты не угадал - он состоит из байтов, таким образом, объект типа String может содержать не только буковки и циферки, но и все остальные символы, с кодами от 0 до 255. И если методы WinSock'а работают с типом данных, названным String, а не, скажем, Byte_Array, из этого совершенно не следует, что Winsock может передавать только текст.

И еще - ты уверен в значениях по умолчанию? В моих программах я это никаким образом, вроде, не менял, а данные передаются пакетами по 8 килобайт.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 11:00

Sasha_karasov писал(а):Да точно! :D

Ну, с MeMBus-ом всё понятно - ему это во сне приснилось, а ты всё это откуда взял? :-?

И ещё, откуда взял, что на уровне 500Мб - ограничение?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 11:05

uhm писал(а):Таки вот, MeMBus, насчет String ты не угадал - он состоит из байтов, таким образом, объект типа String может содержать не только буковки и циферки, но и все остальные символы, с кодами от 0 до 255. И если методы WinSock'а работают с типом данных, названным String, а не, скажем, Byte_Array, из этого совершенно не следует, что Winsock может передавать только текст.

И еще - ты уверен в значениях по умолчанию? В моих программах я это никаким образом, вроде, не менял, а данные передаются пакетами по 8 килобайт.

Методы винсока работают с типом данных, названным Variant. И байтовые массивы прекрасно шлются/получаются. Т.ч аргументация MeMBus-а рушится полностью.

Размер пакета зависит от оборудования между источником и приёмником. Если это быстрая ЛС, то и 8Кб может пролезть одним пакетом. С другой стороны, какой-нибудь хитрозадый роутер может дробить все пакеты на 100-байтные куски - тогда проги MeMBus-а и
Sasha_karasov окажутся в пролёте.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 11:15

Sasha_karasov писал(а):Я вот написал прогу по твоему алгоритму чета мне остальные пакеты не приходят.

А ты, олимпиадный гений, вынеси строку
Код: Выделить всё
Dim allCD As Long
из процедуры в секцию объявлений - и все сомнения отпадут. ;-)
А ещё у тебя Option Explicit не стоит. Ай-яй-яй.
Изображение

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 09.06.2005 (Чт) 12:10

tyomitch писал(а):Размер пакета зависит от оборудования между источником и приёмником. Если это быстрая ЛС, то и 8Кб может пролезть одним пакетом. С другой стороны, какой-нибудь хитрозадый роутер может дробить все пакеты на 100-байтные куски - тогда проги MeMBus-а и
Sasha_karasov окажутся в пролёте.


Ага, а ваши по 8Кб будут пролазить :)
Ну, таки набросились как партизаны :) аж мурашки по коже...
P.S. Признаю свою вину и прошу у Суда снисхождения за свои злодеяния :)
Бороться и искать, найти и перепрятать!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 09.06.2005 (Чт) 12:30

Я думаю, не надо изобретать недоHTML.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 09.06.2005 (Чт) 13:20

Методы винсока работают с типом данных, названным Variant.


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

Размер пакета зависит от оборудования между источником и приёмником.


Круто, не знал об этом. А кто именно определяет размер пакета?

Ага, а ваши по 8Кб будут пролазить


"Наши" по 8 будут пролезать точно так же, как "ваши" по 1 - WinSock автоматически будет разбивать их на пакеты по 100 байт :D

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 13:54

uhm писал(а):
Размер пакета зависит от оборудования между источником и приёмником.

Круто, не знал об этом. А кто именно определяет размер пакета?

Все :-)
Каждый роутер абсолютно волен в действиях, которые выполняет над проходящим трафиком. Может дробить пакеты, может сливать.
Есть минимальный размер пакета, емнип 50 байт - мельче разбить запрещают правила. А по 100 байт - запросто :-)

Т.е. предсказать, какой будет размер пакета при реальной передаче по Интернету - вообще невозможно. Значит, не нужно на это и надеяться. Вот в ЛС - там можно предсказать, но надеяться тоже не нужно :-)

uhm писал(а):
Ага, а ваши по 8Кб будут пролазить


"Наши" по 8 будут пролезать точно так же, как "ваши" по 1 - WinSock автоматически будет разбивать их на пакеты по 100 байт :D

Не винсок, а роутер по дороге. Винсок сам тоже не может предсказать, как будут разбиты пакеты.
Изображение

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 09.06.2005 (Чт) 17:39

tyomitch
Ты покажи как можно отправить файл не по пакетам у меня не получается
Удачи!
С уважением, Алексадр.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 21:04

2Sasha_karasov:
Я писал(а):вынеси строку
Код: Выделить всё
Dim allCD As Long
из процедуры в секцию объявлений - и все сомнения отпадут. ;-)


Читай внимательнее.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.06.2005 (Вт) 21:57

Sasha_karasov, научился-таки слать файл целиком?
Если да, исправь свою "статью".
Изображение

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 15.06.2005 (Ср) 1:14

tyomitch писал(а):Sasha_karasov, научился-таки слать файл целиком?
Если да, исправь свою "статью".

Да, спасибо за урок!(честно) :roll:
ОК! Исправлю.
Удачи!
С уважением, Алексадр.

Гриша
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 20.06.2005 (Пн) 17:39

Сообщение Гриша » 21.06.2005 (Вт) 18:07

Чот я не понял!
Если создавать прогу с функцией докачки после разрыва соединения или случайной перезагрузки компьютера, получится целиком слать? или всё же разбивать придётся???

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.06.2005 (Чт) 21:48

Придётся слать одним куском, начиная с момента последнего разрыва. Бить на маленькие куски совершенно ни к чему.
Изображение

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 107

    TopList