Winsock: как понять, что файл кончился

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

Winsock: как понять, что файл кончился

Сообщение uhm » 06.06.2005 (Пн) 16:37

Исходные условия: на сервере имеется байтовый массив длиной заведомо больше 8Кб. Задача: передать его клиентской части так, чтобы был понятно, что передача закончилась. Идея в том, что на клиенте после окончания пересылки файла должны выполняться действия, которые при неполной передаче массива приведут к ошибке. Как это сделать?

Идея "присобачить к концу массива что-нибудь типа <<конец_массива>>" мне не нравится, поскольку в нем бинарные данные и, чисто теоретически, такая комбинация байтов может встретиться. Есть еще какие-то идеи?

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

Сообщение alibek » 06.06.2005 (Пн) 16:40

<приготовится к принятию файла><информация о файле><блоки данных><передача завершена>.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение alibek » 06.06.2005 (Пн) 16:40

информация о файле -- это в том числе и размер файла.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение GSerg » 06.06.2005 (Пн) 16:40

1. Заиметь в заголовке фразу Content-length
2. Рвать соединение по окончании.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение uhm » 06.06.2005 (Пн) 16:52

Та-ак. :scratch:

Что-то типа такого: в WinSock_DataArrival есть Static переменная, которая показывает, что файл передается, и сбрасывается, когда счетчик байтов достиг длины файла?

Про "рвать соединение по окочании" я не понял. Мне как раз нужно узнать, где окончание.

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

Сообщение alibek » 06.06.2005 (Пн) 16:54

Я бы использовал не Static, а Private (вдруг мне обнулить просто так захочется, по отмене?), но по сути да.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение tyomitch » 06.06.2005 (Пн) 17:05

uhm писал(а):Про "рвать соединение по окочании" я не понял. Мне как раз нужно узнать, где окончание.

Рвёт сервер. Он знает.
Изображение

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

Сообщение uhm » 06.06.2005 (Пн) 17:16

А-а, понял. Не хотелось бы использовать этот способ.

Всё, спасибо всем!

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 06.06.2005 (Пн) 23:09

Вроде ничего сложного, сначала пересылая длину данных...


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

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

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

    TopList