winsock и обрезанный пакет.

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

winsock и обрезанный пакет.

Сообщение Dimen » 20.07.2009 (Пн) 19:59

Делаю авторизацию через контрол winsock, получаю текст страницы, текст страницы неполный. Он его режет по кускам и отправляет, как собрать весь код?
Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
Text1.Text = Data
End Sub
Íå óïóñêàéòå øàíñ!

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: winsock и обрезанный пакет.

Сообщение VBTerminator » 20.07.2009 (Пн) 20:13

1. Определи метку конца передачи (пусть это будет NULL).
2.
Код: Выделить всё
Dim tmp As String

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim Data As String
  Winsock1.GetData Data
  tmp = tmp & Data

  If Right(tmp, 1) = vbNullChar Then Text1.Text = tmp: tmp = ""
End Sub

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: winsock и обрезанный пакет.

Сообщение Dimen » 20.07.2009 (Пн) 20:26

Спасибо. Но что то результата нет, не работает.
Íå óïóñêàéòå øàíñ!

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: winsock и обрезанный пакет.

Сообщение Dimen » 20.07.2009 (Пн) 20:37

вот так сработало:
Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim Data As String
  Winsock1.GetData Data
  tmp = tmp & Data

  'If Right(tmp, 1) = vbNullChar Then
  Text1.Text = tmp
End Sub

Спасибо!
Íå óïóñêàéòå øàíñ!

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: winsock и обрезанный пакет.

Сообщение Dimen » 20.07.2009 (Пн) 21:00

Кстати что то по началу ступил жестко можно же вот так:
Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
Text1.Text = Text1.Text + Data
End Sub
Íå óïóñêàéòå øàíñ!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: winsock и обрезанный пакет.

Сообщение Хакер » 21.07.2009 (Вт) 2:09

VBTerminator, зачем ты советуешь гадость?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: winsock и обрезанный пакет.

Сообщение awl100Alex » 21.07.2009 (Вт) 10:15

Dimen
Зачем отправлять текст по кускам??? Обрезание... скорее всего делает Text1 – это у него такой глюк, поэтому оправляй весь текст страницы, а в Text1 загоняй через...
Код: Выделить всё
SendMessage Text1.hwnd, WM_SETTEXT, ByVal 0&, ByVal Data
Вот тут посмотри аналогичная проблема...
http://bbs.vbstreets.ru/viewtopic.php?f=1&t=39495

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: winsock и обрезанный пакет.

Сообщение dr.MIG » 21.07.2009 (Вт) 10:51

awl100Alex, не надо предлагать ерунду. По-твоему, текст всегда приходит одним куском? Если ты так считаешь, то ты глубоко заблуждаешься.

P.S. а обрезание делает исключительно хирург.
Salus populi suprema lex

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: winsock и обрезанный пакет.

Сообщение arvitaly » 21.07.2009 (Вт) 11:31

Код: Выделить всё
ByVal bytesTotal As Long
зависит от скорости и ширины канала

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: winsock и обрезанный пакет.

Сообщение JohnK » 21.07.2009 (Вт) 12:06

Я в своем проекте делал так: посылаю кусок текста, а впереди длину текста:
Код: Выделить всё
sss = CStr(Len(sss)) & vbCrLf & sss
WS.SendData sss


Принимающая сторона должна склеивать пришедшее и резать по длине, которая передается в начале строки.
Код: Выделить всё
next_i = 1: bExit = False
While Not bExit
 
  i = InStr(next_i, sData, vbCrLf)
  If i = 0 Then Exit Sub
 
  CRC = Val(Trim(Mid(sData, next_i, i)))
  If CRC = 0 Then Exit Sub

  Our_string=(Mid(sData, i + 2, CRC))
 
  next_i = i + 2 + CRC
  If CRC > Len(sData) Then Exit Sub
   
Wend
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 26

    TopList