Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2015, 17:47   #1
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию Parallel.ForEach & async Sockets

Доброго времени суток, столкнулся с такой проблемой. Пишу сканер портов и дабы ускорить его работу использую Parallel.For и асинхронные сокеты. В Parallel.ForEach вызываю вот такую функцию:
Код:
private static void Check(ref IPAddress ip, int port)
        {
            using (var mySoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                var asyncResult = mySoc.BeginConnect(ip, port, null, null);

                if (asyncResult.AsyncWaitHandle.WaitOne(Timeout, true))
                {
                    mySoc.EndConnect(asyncResult);
                    _open++;
                }
            }
        }
Все вроде бы отлично, работает шустро, но вот если сканю большое количество адресов, где то через час-два скана вываливается ошибка:
Код:
Невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена
Немного не понятно с чем это может быть связанно, ибо using и закроет сокет и удалит его, чему там переполняться? Тем более через такой промежуток времени. В общем, помогите разобраться. Заранее благодарю за любой ответ.

p.s. До этого я явно вызывал mySoc.Close(), к необходимому результату не привело.

Последний раз редактировалось FULEREN; 15.11.2015 в 17:50.
FULEREN вне форума Ответить с цитированием
Старый 17.11.2015, 13:36   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Используй Parallel.For и простые сокеты, какой смысл использовать асинхронные, если у тебя все равно Wait стоит?
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Parallel.For FULEREN C# (си шарп) 4 30.08.2015 17:30
Различие работы async & await в консольном и GUI приложении (=Андрей=) C# (си шарп) 2 29.12.2014 11:08
Task Parallel Library работает медленно coNsept Общие вопросы .NET 0 17.09.2014 12:21
Parallel.For ничерта не ускоряет yaapelsinko C# (си шарп) 8 16.06.2012 01:34
Windows Sockets / Сокеты / RAW Sockets bwwebm Работа с сетью в Delphi 4 23.04.2010 09:53