![]() |
|
Модераторы: gambit |
![]()
|
|
| Kirill89 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Доброе время суток.
Помогите убрать зависание в момент подключения сокета
в момент подключения
сама прога не реагирует на запросы пользователя и это выглядит как зависание а мне надо очень много таких подключений подряд делать. посоветуйте пожалуйста что-нибудь. пишу на vb.net - просто так удобнее, если будут примеры на С# - пойму. |
||||
|
|||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: нет Всего: 32 |
Используй асинхронный метод TcpClient.BeginConnect(). Примеры есть в МСДН.
-------------------- I don't need a reason being who I am... |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
QryStaL, спасибо. буду пробовать.
|
|||
|
||||
| Maer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.1.2008 Репутация: 1 Всего: 1 |
Если надо отправит одно сообщения многим Client тогда тебя нади использовать сокетов групповой рассылки.
Например : //Для входа в группу Socket socet=new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); MulticastOption mulcast=new MulticastOption(groupAddress); socket.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership,mulcast); socket.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.MulticastTimeToLive,timeToLive); //Для выхода из группу socket.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.DropMembership,mulcast); |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Maer, к сожалению нужно отправлять не одно и то-же сообщение. информация мне очень помогла, я раньше сталкивался с подобной задачей и так и не решил её. большое спасибо. [+]
|
|||
|
||||
| it_medved |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 1.5.2007 Где: Днепропетровск Репутация: нет Всего: 1 |
а что-бы не зависало, надо всегда пользоваться try{} catch{}
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
очень глубокомысленное замечание, а можно поподробнее, как try/catch влияет на блокировку текущего потока для установки соединения? |
|||
|
||||
| Kirill89 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
используя механизм который предложил QryStaL удалось добиться меньшего зависания... методы подключения и отправки информации прекрасно работают, но вот с чтением проблема(((
было:
приэтом у инстрим отсутствует beginreading() пытался сделать так:
но тогда в строковой переменной strDataIn оказывается какой-то бред( жду ваших предложений... |
||||
|
|||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
Kirill89, надо внимательнее читать MSDN
должен быть в requestCallback. Первым методом в нем должно быть Stream.EndRead. Потом проверяешь, есть ли в потоке еще данные и если да, то опять вызываешь BeginRead. У вас в VB.NET анонимные методы есть? С ними можно сделать очень красиво. |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
arilou, гм... я наверное не совсем понял что к чему... для requestCallback есть событие?
я всё попробую и сразу напишу результат... |
|||
|
||||
| AET |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
можно ваш исходник от програмы тоесть от чата скинь сюда вличка уменя тоже проблема зависает сокеты помаги |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |