На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> BeginReceiveFrom() - зачем ему ref-параметр для endpoint, всё равно ж до окончания приёма там ничего не будет
    В общем, есть закавыка идеологического характера. Итоак, асинхронные сокеты. Сначала делаем BeginReceiveFrom, затем EndReceiveFrom. Оба метода имеют в качестве ref-параметра адрес endpoint, с которого происходит приём данных.

    Вопрос: зачем этот endpoint в begin-параметре? Это что, interface pollution? Есть ли хоть один реальный кейс, когда этот параметр нужен при инициировании асинхронного чтения (а не при сигнализации о его, чтения, завершении). Честно говоря, ломает описывать эти ендпоинты по 2 раза :)
    Windows as usual - my "wau" Windows experience
      если произвести вскрытие System.dll, то можно увидеть

      ExpandedWrap disabled
        public IAsyncResult BeginReceiveFrom(byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP, AsyncCallback callback, object state)
        {
        ...
        this.DoBeginReceiveFrom(buffer, offset, size, socketFlags, endPoint, socketAddress, overlappedAsyncResult);
        overlappedAsyncResult.FinishPostingAsyncOp(ref this.Caches.ReceiveClosureCache);
        if (overlappedAsyncResult.CompletedSynchronously && !overlappedAsyncResult.SocketAddressOriginal.Equals(overlappedAsyncResult.SocketAddress))
        {
            try
            {
                remoteEP = endPoint.Create(overlappedAsyncResult.SocketAddress);
            }
            catch
            {
            }
        }
        ...
        }
      Сообщение отредактировано: Relaxander -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0738 ]   [ 18 queries used ]   [ Generated: 16.12.18, 22:37 GMT ]