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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
extHack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 94
Зарегистрирован: 04.06.2005 (Сб) 12:31
Откуда: 127.0.0.1

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

Сообщение extHack » 06.06.2005 (Пн) 9:26

Посоветуйте плиз, как лучше данные отослать? Я отправляю некий exe-файл по TCP протоколу. Только отправляю его так <tag>hex-byte. Сначала 5 байтов - тэг, а потом байт (в hex)

<fls>FF
<fls>4B

Итд
n/a

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

Сообщение tyomitch » 06.06.2005 (Пн) 11:01

Абалдеть... Кпд такой передачи - 14%.
Просто передавай сами данные безо всяких выкрутасов, и будет тебе щастье.
Изображение

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 06.06.2005 (Пн) 14:13

%))))))))))))))))))))))))) LoooooooooooooooooooooooooooL!!!!!!!
Мдааа... ну ты крутой... я тебе уже говорил, ты поиском воспользуйся! я сюда уже штук 5 кидал таких прог!
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.06.2005 (Пн) 14:14

Линуксоиды, они, по другому не могут :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.06.2005 (Пн) 14:38

А почему сразу линукс? Это и юникс может быть :)
/dev/null
Lasciate ogni speranza, voi ch'entrate.

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 06.06.2005 (Пн) 14:48

Линуксоиды, они, по другому не могут

Ты что думаеш что это в линуксе так все реализовано??? да там все круче чем в винде !!!! /понял что сказал фигню хотя везде все одинаково =) все зависеит от рук которые должны рости не из бекдора.../
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

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

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

Сообщение Sasha_karasov » 07.06.2005 (Вт) 2:11

extHack писал(а):Посоветуйте плиз, как лучше данные отослать? Я отправляю некий exe-файл по TCP протоколу. Только отправляю его так <tag>hex-byte. Сначала 5 байтов - тэг, а потом байт (в hex)

<fls>FF
<fls>4B

Итд


Зачем мудрить?

Файлы вот так нужно отправлять:

1. Открываешь файл(какой те нужно отправить) как binary
2. Читаешь из файла примерно 1024 байт, и отправляешь.
3. ждешь пока дойдет пакет(процедура Winsock1_SendComplete)
4. проверяем все ли мы отправили, если да то выходим, в противном случае идем к пункту 2
Удачи!
С уважением, Алексадр.

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

Сообщение Sasha_karasov » 07.06.2005 (Вт) 2:48

:idea: А вообще наверно нужно, написать статью «Как оправить файл и каталог», и поместить исходник.:D
И не будет этого вопроса больше на форуме!:lol:
Надеюсь! :lol: :lol:
Удачи!
С уважением, Алексадр.

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

Сообщение MeMBus » 07.06.2005 (Вт) 5:40

Я что-то не понял вопроса... Если работать с ocx винсоком, то это одно, если через dll это другое... Вообще винсок в ocx по замыслу не предназначен для передачи “exe” в открытом виде (тока текст)...

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

Сообщение tyomitch » 07.06.2005 (Вт) 14:16

MeMBus писал(а):Вообще винсок в ocx по замыслу не предназначен для передачи “exe” в открытом виде (тока текст)...

Ты это откуда взял? Всё прекрасно передаётся.
Изображение

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

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

Сообщение tyomitch » 07.06.2005 (Вт) 14:19

Sasha_karasov писал(а):Зачем мудрить?

Файлы вот так нужно отправлять:

1. Открываешь файл(какой те нужно отправить) как binary
2. Читаешь из файла примерно 1024 байт, и отправляешь.
3. ждешь пока дойдет пакет(процедура Winsock1_SendComplete)
4. проверяем все ли мы отправили, если да то выходим, в противном случае идем к пункту 2

Зачем мудрить?

Файлы вот так нужно отправлять:

1. Открываешь файл(какой те нужно отправить) как binary
2. Читаешь весь файл целиком, и отправляешь.
Изображение

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 15:02

tyomitch прав... помойму протокол TCP/IP сам проверяет дошел ли пакет или нет...
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 15:05

хотя я на С++ когда Передавалку файлов писал, то у меня было так:
Код: Выделить всё
char filebuff[1024];
do
{
   ReadFile(hFile, filebuff, sizeof(filebuff), &dwRead, NULL);
   if (dwRead != 0)
   send(filesock,filebuff,dwRead,0);
      
} while (dwRead != 0);
Последний раз редактировалось Jenizix 07.06.2005 (Вт) 15:11, всего редактировалось 2 раз(а).
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.06.2005 (Вт) 15:08

Буфферизовать надо не для того, чтобы файл не побился, а для того, чтобы не перегружать сеть (при отправке блоками можно регулировать скорость скачки/закачки). Кроме того, блочная передача позволяет отследить прогресс передачи.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение tyomitch » 07.06.2005 (Вт) 15:35

alibek писал(а):Буфферизовать надо не для того, чтобы файл не побился, а для того, чтобы не перегружать сеть (при отправке блоками можно регулировать скорость скачки/закачки). Кроме того, блочная передача позволяет отследить прогресс передачи.

В VB этого не нужно - существует событие SendProgress.
Винсок-контрол и так упростил передачу по сети до безобразия, а вы зачем-то обратно всё усложняете :-?
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.06.2005 (Вт) 15:37

Да, про SendProgress забыл :)

Но шейпинга в нем все-равно нет. И если нужно реализовать передачу больших объемов данных и при этом не перегружать сеть, то буфферизация нужна.
Lasciate ogni speranza, voi ch'entrate.

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

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

Сообщение Sasha_karasov » 08.06.2005 (Ср) 1:21

tyomitch писал(а):
Sasha_karasov писал(а):Зачем мудрить?

Файлы вот так нужно отправлять:

1. Открываешь файл(какой те нужно отправить) как binary
2. Читаешь из файла примерно 1024 байт, и отправляешь.
3. ждешь пока дойдет пакет(процедура Winsock1_SendComplete)
4. проверяем все ли мы отправили, если да то выходим, в противном случае идем к пункту 2

Зачем мудрить?

Файлы вот так нужно отправлять:

1. Открываешь файл(какой те нужно отправить) как binary
2. Читаешь весь файл целиком, и отправляешь.


Че вот так просто взял загнал файл в переменную и отправил?
Мне кажется что будет большая задержка, так как ПК еще время нужно чтоб например 500 мб загнать в переменную!
А потом если просто возьмешь и отошлешь на сервер или на клиент придет примерно 2~кб. И все!
Мне этот вопрос тоже интересовал, а смотрел код исходников, они все передают по пакетам и ждут пока дойдет пакет.
Удачи!
С уважением, Алексадр.

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

Сообщение MeMBus » 08.06.2005 (Ср) 3:22

tyomitch писал(а):
MeMBus писал(а):Вообще винсок в ocx по замыслу не предназначен для передачи “exe” в открытом виде (тока текст)...

Ты это откуда взял? Всё прекрасно передаётся.


Я не говорю о том, передается ли все прекрасно, или нет. Я о том, что винсок (именно ocx) был разработан для передачи текстовых сообщений (send as string)... А как реализовать передачу через него это уже зависит от каждого... А самый надежный способ это действительно передача файла пакетами и именно не больше 1024 (и не как ни через ocx, дабы не было проблем), т.к. сам сок будет бить эти пакеты.
Бороться и искать, найти и перепрятать!

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

Сообщение uhm » 08.06.2005 (Ср) 10:01

Хи-хи...
А из чего, по-твоему, состоит стринг?

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

Сообщение tyomitch » 08.06.2005 (Ср) 23:58

MeMBus писал(а):
tyomitch писал(а):
MeMBus писал(а):Вообще винсок в ocx по замыслу не предназначен для передачи “exe” в открытом виде (тока текст)...

Ты это откуда взял? Всё прекрасно передаётся.


Я не говорю о том, передается ли все прекрасно, или нет. Я о том, что винсок (именно ocx) был разработан для передачи текстовых сообщений

Откуда ты это взял?

MeMBus писал(а):А как реализовать передачу через него это уже зависит от каждого... А самый надежный способ это действительно передача файла пакетами и именно не больше 1024 (и не как ни через ocx, дабы не было проблем)

И всё это - тоже откуда? :roll:
Изображение

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

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

Сообщение tyomitch » 09.06.2005 (Чт) 0:02

Sasha_karasov писал(а):Че вот так просто взял загнал файл в переменную и отправил?
Мне кажется что будет большая задержка, так как ПК еще время нужно чтоб например 500 мб загнать в переменную!
А потом если просто возьмешь и отошлешь на сервер или на клиент придет примерно 2~кб. И все!
Мне этот вопрос тоже интересовал, а смотрел код исходников, они все передают по пакетам и ждут пока дойдет пакет.

1. Время на загон 500Мб в переменную - не больше, чем на загон 500 000 раз по 1Кб в переменную. Так что тут ты не прав.
2. На клиент всё придёт полностью. Естественно, что не одним куском.
3. Ну мало ли кто что понапишет, я тоже много какие исходники видел. Что на заборах пишут, ты на это тоже ориентируешься? :evil:
Изображение

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

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

Сообщение Sasha_karasov » 09.06.2005 (Чт) 1:29

tyomitch писал(а):
Sasha_karasov писал(а):Че вот так просто взял загнал файл в переменную и отправил?
Мне кажется что будет большая задержка, так как ПК еще время нужно чтоб например 500 мб загнать в переменную!
А потом если просто возьмешь и отошлешь на сервер или на клиент придет примерно 2~кб. И все!
Мне этот вопрос тоже интересовал, а смотрел код исходников, они все передают по пакетам и ждут пока дойдет пакет.

1. Время на загон 500Мб в переменную - не больше, чем на загон 500 000 раз по 1Кб в переменную. Так что тут ты не прав.
2. На клиент всё придёт полностью. Естественно, что не одним куском.
3. Ну мало ли кто что понапишет, я тоже много какие исходники видел. Что на заборах пишут, ты на это тоже ориентируешься? :evil:

:D Ну вот 500, а вот если по пакетам хоть 500 Тбайт пойдет, а у тя нет :P
Ну и как отловить другие пакеты?
Все на форуме говорят что нужно по пакетам отправлять.

А вообще нужно статью написать как отправить файл через Winsock?
И не будет этого вопроса на форуме
Я уже написал статью
Удачи!
С уважением, Алексадр.

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

Сообщение tyomitch » 09.06.2005 (Чт) 1:55

Статья должна быть аргументированной не на уровне "где-то прочитал непонятно что". Давай ещё раз конкретно спрошу - зачем дробить файл? И откуда взялась цифра 1024?

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

Для каждого куска возникает DataArrival, нужно эти куски складывать в одно место.

Не все на форуме говорят так, как ты. Например, я говорю не так, а >99% пользователей не говорят никак. Т.ч. ещё одна фактическая ошибка.
Изображение

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

Сообщение Sasha_karasov » 09.06.2005 (Чт) 3:06

tyomitch писал(а):Статья должна быть аргументированной не на уровне "где-то прочитал непонятно что". Давай ещё раз конкретно спрошу - зачем дробить файл? И откуда взялась цифра 1024?

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

Для каждого куска возникает DataArrival, нужно эти куски складывать в одно место.

Не все на форуме говорят так, как ты. Например, я говорю не так, а >99% пользователей не говорят никак. Т.ч. ещё одна фактическая ошибка.

Ха-ха-ха, всего 500, а через пакеты +Бесконечность, хоть это не надо но это факт!
Кстати филь занимает 700 мб.
Облом уже да? Нужно файл бить.
Я вот написал прогу по твоему алгоритму чета мне остальные пакеты не приходят. Вроде 1024 это размер пакета, точно не знаю ну все передают по 1024.
Вложения
Новая папка.rar
(2.1 Кб) Скачиваний: 54
Удачи!
С уважением, Алексадр.

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

Сообщение FaKk2 » 09.06.2005 (Чт) 3:23

Sasha_karasov

Вот мне интересно. Откуда такая магическая цифра в 1024? Кстати, ты имешь ввиду КилоБайты или Килобиты?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

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

Сообщение Sasha_karasov » 09.06.2005 (Чт) 3:44

FAKK2 писал(а):Sasha_karasov

Вот мне интересно. Откуда такая магическая цифра в 1024? Кстати, ты имешь ввиду КилоБайты или Килобиты?

Кбайты
Удачи!
С уважением, Алексадр.

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

Сообщение FaKk2 » 09.06.2005 (Чт) 3:45

Sasha_karasov

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

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

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

1024 Байт (1Кб)... Для чего... для того чтоб сок "нормально" передал даный пакет...
Бороться и искать, найти и перепрятать!

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

Сообщение Sasha_karasov » 09.06.2005 (Чт) 4:30

Да точно! :D
Удачи!
С уважением, Алексадр.

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

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

uhm писал(а):Хи-хи...
А из чего, по-твоему, состоит стринг?


Ну не знаю прям... наверное из стандартного набора символов...
Бороться и искать, найти и перепрятать!

След.

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

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

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

    TopList  
cron