Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: File transfer / help me please / Добавлено: 04.10.04 21:32  

Автор вопроса:  Alexander
Народ спасайте нужно быстро и безглючно предельно компактно (как для первоклассника) описать как переслать файл нормальных размеров (до 15 мб) по сети где 1 мб/10 мин, просьба не слать в примеры ниче не понял че понял то забыл, если точно то описать как нарезать файл чтоб винсок понял и как склеить, клиент сервер это уже ясно,
а то хексом и бинарником как то матерно и муторно получается...

Ответить

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

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 04.10.04 22:54
А пошел ты ... В примеры :)
Ладно, шучу... :))

Везде нужен Винсок(WS)

SERVER:

[CODE]
Sub Form_Load
WS.LocalPort=999
End Sub

Sub WS_ConnectionRequvirest(requvID as long)
WS.Accept requvID
End Sub

Sud WS_DataArrival(<какие то параметры>)
Dim St as string
WS.GetData St
If (St="FI ")and(Len(St)>3) then
    Open "C:\" & right(st,len(st)-3) For Binary As #1
ElseIf St="End" then
    close #1
    ws.close
else
    Put #1, ,St
End If
End Sub
[/CODE]

CLIENT:
Нужно cmdSend и txtSend(путь файла),txtFile(имя файла)

[CODE]
Sub cmdSend_Click()
Dim St as string
WS.Connect <RemoteIP>,999
DoEvents
WS.SendData "IF " & txtFile
Open txtSend For binary As #1
Do While Not EOF(1)
    Get #1,,St
    WS.SendData St
    Doevents
Loop
ws.SendData "END"
doevents
Close
End Sub
[/CODE]

Ну как? :)

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #2
Добавлено: 05.10.04 16:05
Вол первых, пересылать по одному байту это зверство, потому, что если додать вес АйПи+ТСР пакета то получиться траффик в 8-32 раза больше размера файла. Если же добавить:
St=String(LOF(1), vbNullChar)
То файла прочитаеться за один заход, но будут другие ошибки в коде, пример не будет работать в реальной сети.
Допустим, файл приходит по 100 кб за раз. Общий вес файла - 1 мб.
Значит к нам прийдет 10 раз 100 кб.
Смотрим на код:
 Put #1, ,St
Выходит что файл 10 раз перезапишеться разными 100 кб данными и в итоге будет весить 100 кб вместо 1 мб. Выход: подстчёт количества пришедших данных и делать так:
 BytesCount=BytesCount+len(St)
 Put #1,BytesCount ,St

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #3
Добавлено: 05.10.04 17:03
а еси резать по 500кб или по 1мб..
оптимальный вариант

Ответить

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



Вопросов: 19
Ответов: 118
 Профиль | | #4 Добавлено: 05.10.04 18:46
Народ не грузите, я еше с первым комментом не до конца разобрался, этот XP говорит что мол винда сделала непопровимую ошибку и через шесят секунд склеит ласты, по этой причине сохранитесь( сохранять к стати нечего все вылетает ) и ждите
ну это ладно, так там еще говорит что GET #1, , st это не Бейсиковский код!!!
в итоге:
Open txtSend For binary As #1
Do While Not EOF(1)
    Get #1,,St
    WS.SendData St
    ;Doevents
Loop
ws.SendData "END"
doevents
Close

ваще говорит что файла к примеру "C:\AUTOEXEC.BAT" вообще не существует!!!
хотя я неоднократно проверял ОН ТАМ ЕСТЬ!!!

кстати коммент к ответу barsik а что если сеть сидит на хорошем модеме ZyXEL и старом как мир Acorp rockwell я конечно знаю что они оба живучие, но вы знаете что такое РЕЛЕЙНО АНАЛОГОВАЯ телефонная линия, там без ошибки килобайт не перешлеш...

Ответить

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



Вопросов: 19
Ответов: 118
 Профиль | | #5 Добавлено: 05.10.04 19:01
И еще у меня Acorp ( но линия новейшая цифровая )
а ZyХЕЛЬ у друга но линия ...... Брррррр
она заслуживает мата!!!
я ведь просто просил написать как считать EXE файл в бинаре в память и записать в другом месть с другими параметрами ( но ради бога не говорите про File copy ) просто скажите а как проверять пакеты это я проверю ( в моем ВБ образовании раздел работа с файлами не существует по причине отсутствия литературы и тогда еще интернета... так что валюсь на элементарщине )...

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #6
Добавлено: 06.10.04 15:28
Блин...Вот на те исходник на VBSocket1.1

------klient------

Private Sub Command1_Click()
T1.Connect "127.0.0.1", 237
End Sub

Private Sub T1_Connected(IP As String, port As Long)
 ;Dim AllFile As String
  Open "C:\original.exe" For Binary As #1
   AllFile = String(LOF(1), vbNullChar)
  Get #1, , AllFile
  Close #1
  T1.SendData AllFile
  T1.CloseConnection
End Sub

--------server-----

Dim FilePointer As Long, BytePointer As Long
Private Sub Form_Load()
 T1.Listen 237
End Sub

Private Sub T1_Accepted(IP As String)
BytePointer = 1
FilePointer = FreeFile
 Open ";D:\copy.exe" For Binary As FilePointer
End Sub

Private Sub T1_ConnectionClosed()
 Close FilePointer
End Sub

Private Sub T1_DataArrival(Data As String)
 Put FilePointer, BytePointer, Data
 BytePointer = BytePointer + Len(Data)
End Sub

Сам VBSocket1.1 могу выслать по почте (официально он ещё не вышел, на моем сайте его нет)

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 06.10.04 15:36
Вышли мне, пожалуйста.
[mailto:NoviksPlavnik@mail.ru]

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #8
Добавлено: 06.10.04 17:08
Выслал. Версия тестовая, но, думаю, глюков нет.

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #9
Добавлено: 06.10.04 17:31
и мне зашли... barsik_nk@rambler.ru

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #10
Добавлено: 06.10.04 17:33
ну тогда по 10кб шли а потом клей ... :)

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #11
Добавлено: 06.10.04 17:36
или вообще используй стандартный Виндосовский пересыльщик...

Ответить

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



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #12 Добавлено: 06.10.04 17:46
И мне, и мне! :)

Ответить

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



ICQ: 780477 

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

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #14
Добавлено: 07.10.04 18:42
на рамдлер.ру мыло не высылается. Ждите пока я на сайт загружу контрол или дайте альтернативный емайл

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #15
Добавлено: 11.10.04 20:50
пжалуста... er_andrew@mail.ru

Ответить

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

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



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