Приём сокетом пакетов TCP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Приём сокетом пакетов TCP

Сообщение Space » 19.01.2007 (Пт) 11:45

скажите, пожалуйста, если сервер отправляет пакет двоичных данных клиенту по TCP, можно ли обеспечить приём целого пакета за раз клиентом при TCP соединении? По какому принципу сокет принимает двоичные данные на TCP?

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

Сообщение alibek » 19.01.2007 (Пт) 11:47

Вопрос неясен.
Сокет принимает то, что на него передается. Размер пакета зависит от системных настроек и от маршрута, по которому пакет доходит. Обычно не более 2500 байт и не менее 32.
Lasciate ogni speranza, voi ch'entrate.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 19.01.2007 (Пт) 12:21

ну, к примеру, сервер передаст 8Кб двоичных данных по TCP. Какими кусками будет принимать их клиент? Или примет 8 КБ одним блоком, даже не смотря на то, что данные двоичные, т.е. произвольные?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.01.2007 (Пт) 12:24

Простите, а какая сокету разница, произвольные данные там или нет?

Та же строка или картинка непроивольна только для тебя, а для сокета это просто набор байт. Или я что то путаю?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 19.01.2007 (Пт) 12:29

. Какими кусками будет принимать их клиент?
Любыми. Может сразу 8 Кб, а может и по 200 байт

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

Сообщение alibek » 19.01.2007 (Пт) 13:11

Space писал(а):ну, к примеру, сервер передаст 8Кб двоичных данных по TCP. Какими кусками будет принимать их клиент? Или примет 8 КБ одним блоком, даже не смотря на то, что данные двоичные, т.е. произвольные?

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

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 19.01.2007 (Пт) 14:15

По опыту, тебе нужно "собирать" пакеты самому ориентируясь, например, по CRC
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

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

Сообщение tyomitch » 19.01.2007 (Пт) 14:26

Зачем по CRC? по длине не проще ориентироваться? :-?
Изображение

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 19.01.2007 (Пт) 17:26

Хотел сказать по длине... По CRC только целостность проверить мона... :wink:
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

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

Сообщение alibek » 19.01.2007 (Пт) 17:42

Какой смысл в проверке целостности?
Если пакет дошел, значит он правильный.
Lasciate ogni speranza, voi ch'entrate.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 19.01.2007 (Пт) 17:56

Если принять во внимание что TCP гарантирует доставку данных, то да
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.01.2007 (Сб) 16:25

А есть причины не принимать это во внимание?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 21.01.2007 (Вс) 4:18

Причины есть и их много. Как пример - защита от подмены пакетов в сети.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

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

Сообщение tyomitch » 21.01.2007 (Вс) 14:54

Ерунда. Когда станут подменять пакеты, перегенерируют и CRC. Она же в самих этих пакетах, а не отдельно ;-)
Изображение

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 21.01.2007 (Вс) 16:48

Логично...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 98

    TopList