Передача файла.

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

Передача файла.

Сообщение GPP » 19.01.2006 (Чт) 17:15

Привет всем! Народ помогите пожалуйста. Надо передать по протоколу UDP по локалке файл. Пробовал так:


Программа отправитель.

Private Sub Command1_Click()

Dim buf As String

Open "c:\1.jpg" For Binary As #1

Get #1, , buf

Close #1

Send.RemoteHost = "127.0.0.1"

Send.SendData buf

End Sub

Private Sub Form_Load()

With Send
.RemotePort = 255
.Bind 254
End With

End Sub


Программа "приемник"

Private Sub Form_Load()

With Send
.RemotePort = 254
.Bind 255
End With

End Sub

Private Sub Send_DataArrival(ByVal bytesTotal As Long)

Dim buf As String

Send.GetData buf

Open "C:\2.jpg" For Binary As #2

Put #2, , buf

Close #2

MsgBox "Файл принят"

End Sub

Не работает. Почему не знаю. Файл весит 2.2 метра. Может подскажете? Надо именно через UDP. Так препод сказал. За ранее огромное СПАСИБО.
GPP(c) Gorlo Pavel Programming

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 19.01.2006 (Чт) 18:13

GPPЧерез UDP нельзя сразу весь файл отправить. Он автоматически не делит на пакеты, как в TCP. Надо самому делить файл на части (я по 2к делил) и отправлять. Но так как в UDP нет уведомления о том, доставлен пакет или нет, получатель должет сообщить, что он пакет получил и только тогда можно следующий отправлять...
Программисты не глючат - глючат компиляторы...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 19.01.2006 (Чт) 18:59

Dim buf As String
Open "c:\1.jpg" For Binary As #1
Get #1, , buf
Close #1


Так ты ничего не получиш... Нужно устанавливать еще размер буферной переменной, равным размеру файла. Например так:

buf = Space(Lof(1))
То, что для одних константа, для других только переменная...

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 20.01.2006 (Пт) 2:01

А можно исходничек? Очень надо!
GPP(c) Gorlo Pavel Programming

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 20.01.2006 (Пт) 3:16

Сейчас чёнить придумаем.....ктомуже на приёмнике надо писать

Код: Выделить всё
Dim segments as integer

Dim file() as string

Private Sub Form_Load()

Send.Bind 256
Send.Listen

End Sub

Private Sub Send_ConnectionRequest(ByVal requestID As Long)

send.close
send.acept requestID

End Sub


Private Sub Send_DataArrival(ByVal bytesTotal As Long)
Dim buffer as string
Dim tmparr() as string

send.getdata buffer

tmparr = split(buffer,":");

select case tmparr(0)

case "hello"
    segments = tmparr(1)
    send.senddata "ok"
case "end"
    Open "C:\2.jpg" For Binary As #1
    for i = 0 to ubound(file)
     put #1,,file(i)
    next i
    send.senddata "ok:end"
    send.close
    Exit Sub
default:
    file(tmparr(0)-1) = tmparr(1)

end select



End Sub


Я бы способ не назвал самым иделальным, и не гарантирую что выше приведённый код работает, тк писал его прямо на форуме, без проверки в VB. Немного ВБ стал подзабывать тк пересел на C++
Лучше думать чем жевать.

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 20.01.2006 (Пт) 9:45

Блин. Выше представленный код не пашет... Может у кого завалялся исходничек? Очень надо... За ранее огромное спасибо!
GPP(c) Gorlo Pavel Programming

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 20.01.2006 (Пт) 18:08

Можно и с TCP ! Помогите пожалуйста...
GPP(c) Gorlo Pavel Programming

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 20.01.2006 (Пт) 19:03

во 1ых - передавать файл по UDP - сумашествие...только п TCP... специально для тебя сейчас пишу прогу.... как напишу отошлю в личку...
Лучше думать чем жевать.

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 21.01.2006 (Сб) 4:17

Wild VB Code for Food, ОГРОМНОЕ СПАСИБО!
GPP(c) Gorlo Pavel Programming


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

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

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

    TopList