Массив по сети

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

Массив по сети

Сообщение seelts » 01.12.2004 (Ср) 19:45

у меня есть массив, и мне надо послать его по сети но у меня не получается - васька при получении на другом конце пишет, что слишком много данных
Код: Выделить всё
Dim massiv() As Byte 'оформляем массив байтов
ReDim massiv(dlina - 1) 'длина массива несколько десятков тысяч иногда сотни тысяч элементов - всё время разная
wnsk.SendData massiv 'вроде посылается

как принять этот массив? при отсылке вроде ошибки не возникает....
если создать алгоритм, которым сможет пользоваться даже дурак, то только дурак и будет им пользоваться

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 02.12.2004 (Чт) 15:43

загрузи всё в строку и посылай а то через массив криво посылается.
на другом конце снова всё в массив (если массив типа byte то это совсем легко). примерно так:
x - массив , y - строка содержащая твой массив
отправить:

dim x() as byte, y as string
dim z as long
for z=1 to ubound(x)
y=y & chr(x(z))
next z
winsock.senddata y

получить:
dim x() as byte, y as string
dim z as long
winsock.getdata y
for z = 1 to len(y)
redim preserve x(z)
x(z)=asc(mid(y,z,1))
next z

seelts
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 21.11.2002 (Чт) 11:24
Откуда: Russia

Сообщение seelts » 02.12.2004 (Чт) 19:14

вот только прочитал ответ - щас попробую, НО меня уже сейчас мучают смутные сомнения. я пробовал циклом (без перевода в строку) отправлять мой массив и при senddata вася привисал а потом и вовсе умирал. но всё равно спасибо.
если создать алгоритм, которым сможет пользоваться даже дурак, то только дурак и будет им пользоваться

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 04.12.2004 (Сб) 20:13

seelts писал(а):вот только прочитал ответ - щас попробую, НО меня уже сейчас мучают смутные сомнения. я пробовал циклом (без перевода в строку) отправлять мой массив и при senddata вася привисал а потом и вовсе умирал. но всё равно спасибо.

ты можешь отправить и так:

dim massiv() as byte
winsock.senddata massiv

в любом случае на другом конце строку получишь.

seelts
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 21.11.2002 (Чт) 11:24
Откуда: Russia

Сообщение seelts » 07.12.2004 (Вт) 0:49

почему строку?
Код: Выделить всё
winsock.GetData somedata, vbByte + vbArray
если создать алгоритм, которым сможет пользоваться даже дурак, то только дурак и будет им пользоваться

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 07.12.2004 (Вт) 17:16

seelts писал(а):почему строку?
Код: Выделить всё
winsock.GetData somedata, vbByte + vbArray

честно говоря не пробовал твой метод, но массив можно еще так получить:

dim massiv() as byte
winsock.getdata massiv

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 07.12.2004 (Вт) 17:18

seelts писал(а):вот только прочитал ответ - щас попробую, НО меня уже сейчас мучают смутные сомнения. я пробовал циклом (без перевода в строку) отправлять мой массив и при senddata вася привисал а потом и вовсе умирал. но всё равно спасибо.

если ты посылал так:
Код: Выделить всё
for x = 1 to ubound(massiv)
winsock.senddata massiv(x)
......
то это неправильно. надо весь массив одним пакетом посылать.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.12.2004 (Вт) 19:31

В TCP нет пакетов, он создан чтобы скрыть их от пользователя. Тем более, большой массив одним пакетом всё равно не уйдёт. v-adix, не развращай людей ;-)
Изображение


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

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

Сейчас этот форум просматривают: Google-бот и гости: 27

    TopList  
cron