Опять Winsock

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Опять Winsock

Сообщение Sirik » 06.08.2004 (Пт) 11:36

Значит так, у меня еть 2 контрола (Winsock): 1 на приём, 1 на отправку данных.
В одной процедуре я отправляю данные (72 Kb) с одного Winsock на другой. Доходит только 8192 (у меня буфер 2028, значит доходит только 4 пакета)! Но почему?
Пробовал уменьшать буфер, использовать DoEvents - никакого результата.
Протокол использую UDP. Тест, который описал выше, я проводил на одном компьютере, т.е. один и тот же компьютер источник и приёмник информации.
Но почему не доходит информация?

P.S. Может быть тут имеет место переполнение буфера ?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 06.08.2004 (Пт) 12:08

а на что ты думаешь придумали такие вещи как протоколы?

передаёшь объём инфы, потом саму инфу, а получаетель ждёт пока веь объём не получит.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 12:10

Sebas писал(а):а на что ты думаешь придумали такие вещи как протоколы?

передаёшь объём инфы, потом саму инфу, а получаетель ждёт пока веь объём не получит.

Да знаю, я что такое протоколы!!!
Я проверяю, доходит только 8192 байт, и ни грамма больше.
Пробовал сделать буфер больше 8192 байт, выдает ошибку о переполнение длины датаграмы.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 06.08.2004 (Пт) 13:16

так это первый пакет! жди следующего
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 13:23

Sebas писал(а):так это первый пакет! жди следующего

Не приходят остальные! Я только что попробовал на 2 компьютерах, всё работает.
Я так понимаю, проблемма только когда клиент и сервер находятся (физически) на одном компьютере. Как раз происходит переполнение буфера

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 06.08.2004 (Пт) 13:51

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 12.05.2007 (Сб) 16:48, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.08.2004 (Пт) 13:55

EvilCoder писал(а):Незнаю... :roll: но у меня работает... правда я ТСР использую...
И тоже на своем компе...

Как я понял ты из одной программы подключаешся с одного Сокета к другому, так?

Ага, я же писал: одним Winsock'ом отправляю, другим принимаю данные.
Если запустил программы на разных компах - всё ок, если на одном - доходит только 8192 байта и всё. Не знаю, что ещё сделать :cry:

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 06.08.2004 (Пт) 20:38

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 12.05.2007 (Сб) 16:51, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 07.08.2004 (Сб) 8:17

EvilCoder писал(а):Ты извини... я что-то не понимаю...

Если одна и таже программа и отправляет и принемает (отправленное)... зачем ей на двух компах работать.. Или если это клиент-серверное приложение, то зачем на одном компе?

Объясняю: я делаю тест на одном компьютере, чтобы не напрягать коллег. Потом, конечно, она будет на всех компах в сети.

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 07.08.2004 (Сб) 12:15

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 12.05.2007 (Сб) 16:53, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 07.08.2004 (Сб) 12:25

попробую объяснить:
все пакеты доходят нормально, если передаю малый объём инфы. но как только я передал 30 Kb, походит только 8192.
У меня просто одна процедура "кидает" пакеты, вторая должна, как бы паралельно, обрабатывать полученные данные. На самом деле программа сначало передаёт, потом только принимает. И мне кажется протсо переполняется буфер винсока на приём

er_admin
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 04.06.2004 (Пт) 21:25

попробуй по-другому

Сообщение er_admin » 07.08.2004 (Сб) 17:27

1 выход - работать на TCP
2 выход - перед тем, как отправить инфу, разбей её на части по 8192.
потом отправляй одну часть и жди потверждения, что другой принял инфу. как получил подтверждение, отправляй следующую часть и так до конца. это точно будет работать - у меня такая же проблема была. первый вариант лучше по-моему.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

To Sirik

Сообщение xenomorph » 07.08.2004 (Сб) 19:28

Лажа сер я не уверен - дай свой код 8)
У меня файлы до 13 Мб перегонялись ...
не помню почему (давно было дело 8)
нарвался на ту же проблему 8)))
Решил ...

Winsock.PeeData - накапливает инфу ...
Winsock.GetData - забирает ... из буфера ...

У меня реализация - строковая ...

В конце пакета - маркер ...

Вообщем запость кусок кода 8)
И я попробую сказать к какой ДНК ошибка ... 8)
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...


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

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

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

    TopList  
cron