Помогите c Winsock классами ? :(

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

Помогите c Winsock классами ? :(

Сообщение ALX_2002 » 23.06.2005 (Чт) 0:45

Отцы. Тут проблемка с Winsock Class-ами. Ни в какую не могу ничего сделать.

Помогите плиз. :cry: ( Стыдно, позорно, а что делать )

Порылся по инету - на обычном Winsock всё просто, а вот с классами я в непонятках

1) Всунул эти модули и создал свой

В своём объявил Dim WSK as New CSocket.

Подумал что ивенты нужны написал WithEvents Узнал, что в обычном модуле такое не пройдёт.

2) Попытался разобраться почему модуля 2 - в одном полно функций и в другом.


В КРАТЦЕ - ЛАМО ПРОСИТ ПОМОЩИ У ВЕЛИКИХ. :cry:

Хелпаните примерчиком приёма или отправки данных с этими классами. пожаааалсста. :roll:
Вложения
CSocket-1.0.12.zip
(25.58 Кб) Скачиваний: 35
Последний раз редактировалось ALX_2002 28.06.2005 (Вт) 11:51, всего редактировалось 1 раз.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 23.06.2005 (Чт) 7:13

1) [/quote] Подумал что ивенты нужны написал WithEvents Узнал, что в обычном модуле такое не пройдёт.[/quote]
WithEvents можна использовать только в объектных модулях, так что прийдется процедуры по обработки информации писать либо в классе, либо в форме.
2)
Хелпаните примерчиком приёма или отправки данных с этими классами. пожаааалсста.

Да, там все аналогично Winsock'у, сам разбирался, только эвенты теперь начинаются с On.... В принципе все.
الفيجوال بيسك الرابح

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

ку ...

Сообщение xenomorph » 23.06.2005 (Чт) 9:28

> В своём объявил Dim WSK as New CSocket
!!! ^^^ !!!
Не так сэр!
а вот так:

Дек:
Dim WSK as CSocket

При загрузке формы:
Set WSK = New CSocket

Это инициализирует обект с событиями.
И его можно использовать 8-).

Работает только в форме \ классе.

> Попытался разобраться почему модуля

Так надо! 8-).
Точнее один - модуль и один класс.
Смотри код Гдалевича.

см. пример 8).
--
Удачи!
Вложения
Sample.rar
(25.27 Кб) Скачиваний: 31
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 23.06.2005 (Чт) 11:09

2 xenomorph: УХ ! Респект + огромное спасибо ! :shock: ! Сейчас буду смотреть ! :D

Вот к сожалению только не понял

Код: Выделить всё
Дек:
Dim WSK as CSocket

При загрузке формы:
Set WSK = New CSocket


А почему надо 2 раза димить ? Разве не получиться тоже самое если

Dim WSK as New CSocket ? - Это же вроде аналогичный вариант ?

Хотя может я всё таки уже начал забывать VB.... :oops:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 23.06.2005 (Чт) 11:23

GM писал(а):1)
Подумал что ивенты нужны написал WithEvents Узнал, что в обычном модуле такое не пройдёт.

WithEvents можна использовать только в объектных модулях, так что прийдется процедуры по обработки информации писать либо в классе, либо в форме.
2)
Хелпаните примерчиком приёма или отправки данных с этими классами. пожаааалсста.

Да, там все аналогично Winsock'у, сам разбирался, только эвенты теперь начинаются с On.... В принципе все.


Так...Ага. У меня формы нету, значит в классе. А как же быть там c
SUB MAIN ? У меня VB отказался там его делать. :oops:

Нежели придётся ещё 4-ый модуль делать где сам Sub Main будет ? :roll:

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

Сообщение xenomorph » 23.06.2005 (Чт) 14:26

> Так...Ага. У меня формы нету, значит в классе. А как же быть там c
> SUB MAIN ? У меня VB отказался там его делать.

Sub Main ты пишеш в модуль.
В нём же инициализируешь класс-переходник НО БЕЗ событий!
А в этом классе (при его инициализации или
вручную) инициализируешь класс и инстанс Винсока.

Таким образов внутри класса БЕЗ событий у тебя
будет объявлен класс Винсока С событиями.

На уровне модуля нельзя юзать класс с событиями,
но можна юзать класс БЕЗ событий. Идея такая - создаёшь класс-переходник
в котором создаёшь класс С событиями. Если тип класса Public,
его можно использовать прямо из модуля.
(см. пример).

> А почему надо 2 раза димить ?

Димить надо один раз.
Только ещё нужно инициализировать - запустить новый инстанс класса.

>Разве не получиться тоже самое если
> Dim WSK as New CSocket ? - Это же вроде аналогичный вариант ?
Так ты его обявляешь БЕЗ событий. А надо с событиями.

я с перепою не то написал 8-).
ВБ НЕ разрешает использовать конструкцию вида:

Dim WithEvents cls_Winsock As New CSocket

Вот так правильно:

1. Декларация:

Dim WithEvents cls_Winsock As CSocket

2. Инициализация:

Set cls_Winsock = New CSocket

ИМХО
Только так можно.
Вложения
Sample.rar
(18.91 Кб) Скачиваний: 47
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 23.06.2005 (Чт) 14:45

Бррр.... В голове каша.... :shock: Классы переходные... Ааа...

Ну лан - буду пробывать набивать шишки и учиться на своих ошибках :D

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 28.06.2005 (Вт) 10:05

И снова доброго дня вам, господа программеры.
Благодарю xenomorph. Всё понял как пашет.

К сожалению новый трабл

Никак не пойму как разбиндить занятый мною порт.

Т.е если мой модуль занял порт 1001 например, а потом выпал с ошибкой, то при следующем запуске он выдаёт ошибку. Address Is Already in Use

Вот, хотел узнать, как этого избежать ? :roll:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 28.06.2005 (Вт) 10:10

Попробывал поставить STOP в Class_Terminate.

А оно не происходит :(

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

Ку ...

Сообщение xenomorph » 28.06.2005 (Вт) 17:04

Привет!
--
UDP или ТСР?
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 28.06.2005 (Вт) 17:15

2 xenomorph: Доброго дня !! :D TCP. Очень буду рад совету. :roll: :idea:

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

Сообщение xenomorph » 28.06.2005 (Вт) 17:54

Код в студию 9-)
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 28.06.2005 (Вт) 18:36

Как скажете. Вот он код. :roll:
Вложения
Example.rar
(25.63 Кб) Скачиваний: 38

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

Re ...

Сообщение xenomorph » 28.06.2005 (Вт) 20:07

321
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

re

Сообщение xenomorph » 28.06.2005 (Вт) 20:37

Эээ ... Батенька так всёж через одно место делаеться 8).
(ещё код не проверял - открыл и решил начепятать 8):)

Вот ты пишешь сервер без окон?
Я правильно говорю?

А фиг тебе! 8). С окнами. С невидимыми.

Ты используешь класс Гдалевича "ССокет".
Он построен на асинхронных сокетах.
Создание асинхронного сокета подразумевает создание
окна для приёма сигнальных сообщений от системы про
статус оного. ЭТО ЕСТЬ ФИЧА асинхронных сокетов.
Т.е. - хотишь асинхронных сокетов - делай окно!

(можешь поверить на слово 8) - вариант - пройтись по МСДН.
Но я на сокеты делаю восновном на МАЗМе 8)))))
т.е. ИМХО я на них не одну собаку съел 8))).

Поиск по коду ССокета:

Private Function CreateWinsockMessageWindow() As Long

Эта функ-ия создаёт такое невидимое окно.

В итоге - ты фигнёй страдаешь 8).
Окна в проге будут. Хош ты того или не хош.

Другой вопрос - почему ты не хотишь делать окна.

Вариантов два:
1. Избежать таких нехороших прог как трассировщики невидимых окон.
Как я уже заметил - не выйдет 8)! (ну ... ТАК не выйдет 8)))
2. Размер проги.
Забудь! Бери UPX + Scrambler.
И делай себе окна.
Всё равно без них никуда 8) Виндовс как никак 8))).

--
Насчёт кода 8))))
Уже теперь я понимаю почему ты спрашивал насчёт мониторинга проги БЕЗ
процедуры анлоада 8).

1. Баг про "занятый порт" будет только в ИДЕ Васика. При тестах
на откомпиленой проге всё ОК.

Почему так:

Потому что необходимо всё деинициализировать подсистему WSA в частности 8).
Когда работает Винсок (компонент) - он эти ошибки САМ локализирует и устраняет. А
когда ты пишешь на АПИ то окна убиавать, сокет деинициализировать ты должен сам!
(если ты это делаешь в ИДЕ Васике). Если это прога, то винда подчищает за ней сама.
Тихо. Именно поэтому сама прога вылетает корректно - аосле перезапуска всё ОК.

2. Именно поэтому НЕЛЬЗЯ тормозить проэкт с ССокетом через "Стоп" в ВБ ИДЕ.
т.к. ИДЕ:
а) Работать уже корректно не будет.
б) Вылетит вскоре нафиг 8).

3. Ты чё пишешь? Поменяемься идеями? 8-).
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 28.06.2005 (Вт) 20:57

Ой мама моя.... Как же всё таки плохо быть ламером.... :oops:

Спасиб за инфу. Пойду изучать васик. :oops: :(

На счёт идей З.Ы - идеев теперь нету. Тока мысли... И они стучаться внутри головы как молекулы газа в банке... :shock:

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

re

Сообщение xenomorph » 28.06.2005 (Вт) 21:16

Offtop \\
(на ум приходят слова классика: [укр.]):
ГУРИ, МОИ ГУРИ, ГОРЕ МЕНІ З ВАМИ ...
ЧОМ ВИ СТАЛИ НА ПАПЕРІ СУМНИМИ РЯДАМИ 8)))!
lol 8)))))))))))
\\ Offtop
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

Re: re

Сообщение tyomitch » 28.06.2005 (Вт) 21:37

xenomorph писал(а):Вот ты пишешь сервер без окон?
Я правильно говорю?

А фиг тебе! 8). С окнами. С невидимыми.

Ты используешь класс Гдалевича "ССокет".
Он построен на асинхронных сокетах.
Создание асинхронного сокета подразумевает создание
окна для приёма сигнальных сообщений от системы про
статус оного. ЭТО ЕСТЬ ФИЧА асинхронных сокетов.
Т.е. - хотишь асинхронных сокетов - делай окно!

Неправда ваша, товарищ. Вполне себе можно и без окон обойтись.
Я тут недавно выкладывал мой SOCKS4-прокси: там никаких окон не было.

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

xenomorph писал(а):Окна в проге будут. Хош ты того или не хош.

Точно-точно. Безоконной проги на VB6 вообще не бывает, мы это уже выясняли.
Другое дело, что создавать собственные окна только для того, чтобы ловить сообщения сокетов - совершенно незачем.
Изображение

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

?

Сообщение xenomorph » 28.06.2005 (Вт) 22:19

А можно посмотреть (проксик)?
--
Чё т поиск ничё не дал ...
руки у меня кривые видно 8(((
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

re

Сообщение xenomorph » 29.06.2005 (Ср) 9:26

Да согласен - я не прав ...
... WSAEventSelect принимает объект синхронихзации ...
можна можна ивенты использовать 8-).

(1. обычно делают через окна и сабклассинг)

Но что-то я сомневаюсь что от использования ивентов
человеку проще станет 8))) ...
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

Re: re

Сообщение tyomitch » 01.07.2005 (Пт) 19:07

xenomorph писал(а):(1. обычно делают через окна и сабклассинг)

Этому есть ещё какие-нибудь причины, кроме "доброй традиции"?
Изображение

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

ре

Сообщение xenomorph » 01.07.2005 (Пт) 23:23

Незнаеие ивентов и семафоров 8-).
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...


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

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

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

    TopList