Страница: 1 |
Страница: 1 |
Вопрос: Сокеты
Добавлено: 23.08.05 00:36
Автор вопроса: Neco | Web-сайт:
Мучаюсь тут с сокетами на дотНэте.
Проблема в том, что у класса Sockect нет нормального метода Close. Его ненормальность проявляется в том, что при этом расформировывается сам объект и его надо создавать заново. Вначале у меня главный сокет, объявленный глобально, создавался при инициализации и уничтожать его я не думал. Однако потом выяснилось, что нет команды UnBind и чтобы освободить порт надо уничтожать весь сокет командой Close. Потом появилась проблема проверки существования объекта - проверять каждый раз if sckComm is nothing честно говоря влом. Вслепую создавать - будут утечки памяти. Решил заменить глобальную переменную на локальную - опять не то - узнать кем забинден порт (моим же классом, либо же сторонней прогой) невозможно без создания разных тупых булевых переменных.
В общем, ощущение, что как-то я не так работаю с этим классом, хотя я уже создавал класс на шестом С++ и там всё работало нормально и без утечек. Здесь вроде должно быть попроще, а на деле только хуже.
Есть нормальные примеры работы асинхронных сокетов без использования потоков?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #1
Добавлено: 23.08.05 08:06
Иди отдохни пивка попей с друзьями. Мб поможет так всегда бывает паришься, паришься, а потом все разом решается.
P.S. это не читай, но разом у тя не получиться ))
Номер ответа: 2
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #2
Добавлено: 23.08.05 10:12
А ты не думал над тем, чтобы создать простейшую обёртку вокруг класса socket, которая бы делала всё, что нужно?
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 24.08.05 20:53
>P.S. это не читай, но разом у тя не получиться
Это типа потому что мордой не вышел?
>А ты не думал над тем, чтобы создать простейшую обёртку вокруг класса socket, которая бы делала всё, что нужно?
Имхо, тут обычным сабклассингом не поможешь, да и не в этом дело. Я же говорю, что свой винсок на С++ я уже писал и на первый взгляд класс Socket предоставляет почти такой интерфейс как и виндовая dll, однако по ходу начали вылезать такие вот тонкости и всё испортили.
Хотя я уже нашёл статью о сборке мусора на дотНэте и проблему решил.
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 25.08.05 02:36
А нафига сабклассинг-то?
Внутри твоего класса private переменная типа socket, а методы твоего класса делают необходимую подготовку.
А то и просто - inherits socket...
Номер ответа: 5
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #5
Добавлено: 25.08.05 07:53
Я твоего лица не видел, а уж тем более морды))