Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Пресылка файла через Винсрк только по 2-м айпи Добавлено: 07.06.05 14:50  

Автор вопроса:  MYSTERIOR | Web-сайт: XXX | ICQ: 227369659 
Господа, как переслать файл через винсок ТОлько имея начальный айпи и удалённый айпи, и как на удалённом айпи сей файл получить и сохранить на диск? Примерчика не дадите? Заранее благодарен.

Ответить

  Ответы Всего ответов: 31  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 07.06.05 15:30
Гм.. Вопрос конечно очень интересный...
Только вот не вижу большой пользы от файла, который может уместиться в
рамки IP-адреса (4 байта, либо по протоколу IPv6 - 6 байт)... Да и
сменить IP-адрес, тем более чужого компьютера, не так-то просто...

Забавная задумка.. Оригинально!

Ответить

Номер ответа: 2
Автор ответа:
 Pashenko



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #2 Добавлено: 07.06.05 15:43
2 Павел: а что, правда в IPv6 IP-адрес 6 байт?

Ответить

Номер ответа: 3
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #3 Добавлено: 08.06.05 13:51

To Мистерио

Мда.. Задумка класс. Скажи одну вещь - во первых, какой протокол будет?
И вообще будет ли твоя прога стоять на обоих компах??? или ты хош ЗАСТАВИТЬ удаленный комп принять твой файл?

Ответить

Номер ответа: 4
Автор ответа:
 MYSTERIOR



ICQ: 227369659 

Вопросов: 31
Ответов: 96
 Web-сайт: XXX
 Профиль | | #4
Добавлено: 08.06.05 16:05
2RomaVis:
1)Ну наверное чтобы файл пришёл нормально надо юзать тсп/айпи.
2)Знаете что, я вот тут конечно рад, что такая дискуссия получилась, но у меня такое чувство, что я имел ввиду несколько другое: моя прога будет стоять на обоих компах и на моём будет происходить отправка файла, а на джругом этой же прогой будет происходить получение файла, причем я знаю ip того компа куда надо засылать файл (ну и ес-но свой ip :). ПО-моему, вопрос элементарный, когда-то я такие весчи легко реализовывал, но так получилось, что я ВБ 1.5 года в руки - не брал - прибил он меня, я так сказать вообще забил на кодинг, и вот щас чёт припёрло опять... :)

Ответить

Номер ответа: 5
Автор ответа:
 MYSTERIOR



ICQ: 227369659 

Вопросов: 31
Ответов: 96
 Web-сайт: XXX
 Профиль | | #5
Добавлено: 08.06.05 16:06
По-моему, такое выделывать меня научили на этом форуме! :)

Ответить

Номер ответа: 6
Автор ответа:
 MYSTERIOR



ICQ: 227369659 

Вопросов: 31
Ответов: 96
 Web-сайт: XXX
 Профиль | | #6
Добавлено: 08.06.05 21:00
Ну так что с пересылкой файлов... Хотя нет, спрошу по другому, чтоб было понятнее: У меня есть переменная типа $. В ней содержимое файла...
Мне надо передать ету строку на другой компутер, шог мне делать? Учитывая то что у меня на другой машине тоже стоит моя прога? Дайте плз сэмл...

Ответить

Номер ответа: 7
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #7 Добавлено: 08.06.05 21:01

Знач насет пересылки... Пользуй протокол TCP/IP

Кстати слыш, если ТЫ сробираешся пересылать ЕМУ файл, то твой АйПи здесь не нужен... Он нужен только в обратной ситуации.

Значит вот што я скажу -

1) Проги должны быть типа Сервер\Клиент (думаю ты сам сможеш это организовать)

2) Думаю теорию соединений протокола ТСП\ИП ты знаеш (ели нет - учи, она простая)

3) По поводу самого процесса пересылки файла -

Вот маленький примерчик - он вроде...

Dim bytearray() as Byte
Dim TM as Long
Sub OpFile(File as string)
    Open File for binary as #1 'номер любой,желательно получить при помощи FreeFile
         Get #1, ,bytearray()
    close #1
end sub
Sub Transfer(RemoteIP as String)
    WS.Close
    WS.Connect RemoteIP
    do while WS.State <> 7 'Можно использовать вместо 7 sckConnected
    doevents
    Loop
    Do while TM <10000 'Небольшая задержка для страховки..
    DoEvents
    TM=TM+1
    loop
    WS.SendData bytearray()
End Sub

Ответить

Номер ответа: 8
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #8 Добавлено: 08.06.05 21:06

Как ты уже понял WS - это WinSock

Теперь по поводу серв. части


Dim bytearray() as Byte
Private Sub ws_DataArrival(ByVal bytesTotal As Long)
bytearray()=ws.GetData
''Записуем полученное в файл...
Open "C:\TRANSFILE1.hjkd" For Binary As #1
     Put #1, ,bytearray()
Close #1


Вот ты получил данные(файл) и сохранил его на диске С, под именем TRANSFILE1.hjkd . Зачем такое расширение? Затем чтобы его можно было потом переименовать.

Ответить

Номер ответа: 9
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #9 Добавлено: 08.06.05 21:11

НО СКАЖУ СРАЗУ! Я НАПИСАЛ ЭТОТ КОД ЗА 3 минуты експромтом. Он не тестилса не разу. И может содержать кучу ошибок!!!

Даже если он работает, не думай что у тебя в руках шедевр - это лиш сама теория ппосылки\приема файла. Этот код может только отправить один файл и сервер примет его. Я не сказал некоторых вещей - порт иное.. Разберись как код робить, если чото неясна - задай вопросы. Я отвечу.

Ответить

Номер ответа: 10
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #10 Добавлено: 08.06.05 21:14
КСТАТИ СКАЖУ ОДНУ ВЕЩЬ

1) обое кодов надо писать в коде форм.

2) У клиента в процедуре OpFile есть параметр File - это путь к файлу

Ответить

Номер ответа: 11
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #11 Добавлено: 08.06.05 21:15

Ну как? Работает?

Ответить

Номер ответа: 12
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #12 Добавлено: 08.06.05 21:24
Кстати
Мне надо передать ету строку на другой компутер


Не ПУГАЙ МЕНЯ!!!! Файл - это не строка! Токо текстовые файлы можно использовать как строки!Win32 PE файл(ЕХЕ всякие, ОСХ и ДЛЛ и ещо чото..) представляет собой что-то вроде байтового массива. Если ты загрузиш РЕ файл в строку, и сохраниш строку на диск, то этот файл у тя никогда в жизни не заработает!

И ещё одно. СОВЕТУЮ Объявляй переменные, в которые буш сувать файлы в виде байтового массива - как у меня :
Dim ByteArray() As Byte
Мож использовать любое другую название переменной, но СКОБКИ обязательно нада, и тип должен быть BYTE.


P.S

Если делаеш текстовый редактор, тогда исключение - для редактирования ТХТ, ДОК, и всяких других текстов (не РЕ файлов) подойдет переменная без скобок и в типе String - просто загрузить массив байтов в ТекстБокс или RichTextBox просто сложно или вообще невозможно"

Ответить

Номер ответа: 13
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #13
Добавлено: 08.06.05 21:34

Файл - это не строка


а что такое строка?

RomaVis, тебе надо ещё немало литературы прочесть, прежде чем так смело постить на этом форуме, тебе ещё повезло, что сюда sne, sharp,CyRax, Cresta не заглядывали :) они бы тебя быстро нарпавили на путь истенный :)))

Ответить

Номер ответа: 14
Автор ответа:
 RomaVis



ICQ: 266287351 

Вопросов: 31
Ответов: 147
 Профиль | | #14 Добавлено: 08.06.05 21:44

2 DaSharm

    Знаю.. Я ващето теорию саму коренную очень плохо знаю. Мож я просто непральна выразился.

Просто сатри сам - Загружаешь ЕХЕ файл в строку, и сохраняеш строку в файл с расширением ЕХЕ куда нить. И что??? ЭТОТ ФАЙЛ ЗАПУСТИТСЯ??? НЕ В ЖИЗНИ.

П.С

Всётаки он запустится, если предварительно подготовить переменную типа String. ПОДГОТОВИТЬ - имею ввиду String PREMNAYA, LOF(FileNumber)

Ответить

Номер ответа: 15
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #15
Добавлено: 08.06.05 22:11
это связано с тем, что строки бывают разных типов, ANSI ASCII и UNICODE, UNICODE без проблем подходит для хранения файлов в них... СТрока это и есть байтовый массив.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам