Передача файлов
Есть такая задача - организовать передачу файлов от одного компа к другому. Есть две проги
КЛИЕНТ-СЕРВЕР! Я хотел для этого использовать WinsockControl, но с помощью него получается передовать лишь текстовые файлы и тому подобное. Но главное это передача EXE,BAT,COM файлов и это уже проблема! Подскажите возможные способы решения проблемы!
Кто-нибудь может подсказать, как полностью считать бинарный файл! Я так понял, что передавая бинарный файл по байту я смогу потом его собрать, но вот как узнать количество таких порций в файле (которые считываются оператором Get) ???
Я конечно не флудер :D , но помоему это работает.
Попробуй:
Dim OneChar As String * 1
Open "Твой ЕХЕ файл" For Random As #1
Do
i = i + 1
Get #1, i, OneChar
'Передаешь этот байт куда там тебе нужно
Loop Until i = LOF(1)
Close #1
P.S. по сути ты пытаешься изобрести FTP протокол, может тебе проще будет использовать уже готовые ActiveX реализующие FTP протокол передачи файлов (кстати основанные на том же Winsock), чем писать это самому, тогда у тебя уже будет набор готовых удобных методов: и гарантированная передача файла, докачка, ограничение по скорости и т.д.
Вообщем, никто не мешает тебе через Winsock передавать файлы .com, .exe и т.д. Winsock все равно что передавать, указываешь тип передаваемых данных - Byte и передавай любые данные, хоть текстовые.
P.S. по сути ты пытаешься изобрести FTP протокол, может тебе проще будет использовать уже готовые ActiveX реализующие FTP протокол передачи файлов (кстати основанные на том же Winsock), чем писать это самому, тогда у тебя уже будет набор готовых удобных методов: и гарантированная передача файла, докачка, ограничение по скорости и т.д.
Да проблема не столько в winsock. Когда я открываю просто содержимое EXE файла оно отображается как-то не так ка должно. Т.е. если я просто его передам на другой комп, например, построково и там создам файл с тем же именем он уже не будет запускаться! Вот в чем вопрос.
Да проблема не столько в winsock. Когда я открываю просто содержимое EXE файла оно отображается как-то не так ка должно. Т.е. если я просто его передам на другой комп, например, построково и там создам файл с тем же именем он уже не будет запускаться! Вот в чем вопрос.
Хмм, похоже на мой трабл о котором я уже писал здесь в свле время. мне надо было послылать команды на FTP-сервер, и после передачи их через Winsock они коверкались. Но я работал именно с текстовыми данными, т.е. посылал строку (никто тогда не смог помочь, у других людей мой пример работал нормально, я грешил на Юникод, OfficeXp использует юникод по умолчанию; компиллятор Visual Basic 6.3 хранит в юникоде string данные, а Win98 с юникодом не очень дружит). В случае передачи данных типа Byte такой фигни по идее быть не должно, так что я очень удивлен.
P.S. я потом из-за этих проблем забросил идею написания собственного класса FTP-протокола через winsock и стал использовать уже готовый, сторонний ActiveX.
Хмм, похоже на мой трабл о котором я уже писал здесь в свле время. мне надо было послылать команды на FTP-сервер, и после передачи их через Winsock они коверкались. Но я работал именно с текстовыми данными, т.е. посылал строку (никто тогда не смог помочь, у других людей мой пример работал нормально, я грешил на Юникод, OfficeXp использует юникод по умолчанию; компиллятор Visual Basic 6.3 хранит в юникоде string данные, а Win98 с юникодом не очень дружит). В случае передачи данных типа Byte такой фигни по идее быть не должно, так что я очень удивлен.
P.S. я потом из-за этих проблем забросил идею написания собственного класса FTP-протокола через winsock и стал использовать уже готовый, сторонний ActiveX.
Я вот что имел ввиду: если мы берем EXE файл переименовываем его в txt, копируем содержимое,закрываем нахрен,
создаем новый txt файл, копируем в него из буфера, закрываем и переименовываем в EXE так вот он уже не запуститься и
более того он будет занимать гораздо меньше! По такому же принципу работает построковая отсылка! Вот как же правельно открыть исполняемый файл?
Я вот что имел ввиду: если мы берем EXE файл переименовываем его в txt, копируем содержимое,закрываем нахрен,
создаем новый txt файл, копируем в него из буфера, закрываем и переименовываем в EXE так вот он уже не запуститься и
более того он будет занимать гораздо меньше! По такому же принципу работает построковая отсылка! Вот как же правельно открыть исполняемый файл?
Нее, ну так конечно лучше не делать, открывать его как текстовое, потом копировать в буфер, вставлять и сново сохранять - это ты делаешь кучу ненужных преобразований и причем еще неправильных преобразований, ведь исполняемый файл не содержит текстовых данных (в смысле содержит конечно, но и не только, скажем, в меньшем случае). Например: по стандарту исполняемых файлов в системе Win, exe должен содержать в начале определенный заголовок со служебной инфой (там же мелькает единст. читаемая фраза - This program cannot be run in DOS mode). Причем размер ее строго фиксирован и неиспользуемая место до основного кода программы просто заполняется нулями... то что у тебя получается после преобразования содержимого бинарного файла в текст уже будет является полной кашой
Ты должен открыть файл на чтение в режиме Binary. Считать данные в массивчик Byte и его передать по winsock, повторить эти действия до конца файла.
Нее, ну так конечно лучше не делать, открывать его как текстовое, потом копировать в буфер, вставлять и сново сохранять - это ты делаешь кучу ненужных преобразований и причем еще неправильных преобразований, ведь исполняемый файл не содержит текстовых данных (в смысле содержит конечно, но и не только, скажем, в меньшем случае)
Ты должен открыть файл на чтение в режиме Binary. Считать данные в массивчик Byte и его передать по winsock, повторить эти действия до конца файла.
Да нет я просто описал принцип построковой отправки!
А вот с бинарной отпрвкой у мя наконец вышло за что большое спасибп!