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

    Вопрос: зачем этот endpoint в begin-параметре? Это что, interface pollution? Есть ли хоть один реальный кейс, когда этот параметр нужен при инициировании асинхронного чтения (а не при сигнализации о его, чтения, завершении). Честно говоря, ломает описывать эти ендпоинты по 2 раза :)
      если произвести вскрытие 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,0159 ]   [ 17 queries used ]   [ Generated: 28.03.24, 20:32 GMT ]