
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.80.4.147] |
![]() |
|
Сообщ.
#1
,
|
|
|
В общем, есть закавыка идеологического характера. Итоак, асинхронные сокеты. Сначала делаем BeginReceiveFrom, затем EndReceiveFrom. Оба метода имеют в качестве ref-параметра адрес endpoint, с которого происходит приём данных.
Вопрос: зачем этот endpoint в begin-параметре? Это что, interface pollution? Есть ли хоть один реальный кейс, когда этот параметр нужен при инициировании асинхронного чтения (а не при сигнализации о его, чтения, завершении). Честно говоря, ломает описывать эти ендпоинты по 2 раза ![]() |
Сообщ.
#2
,
|
|
|
если произвести вскрытие System.dll, то можно увидеть
![]() ![]() 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 { } } ... } |