public static Task <SocketReceiveMessageFromResult> ReceiveMessageFromAsync(
this Socket socket,
ArraySegment <byte> buffer,
SocketFlags socketFlags,
EndPoint remoteEndPoint)
{
return(Task <SocketReceiveMessageFromResult> .Factory.FromAsync(
(callback, state) => socket.BeginReceiveMessageFrom(
buffer.Array,
buffer.Offset,
buffer.Count,
socketFlags,
ref remoteEndPoint,
callback,
state),
asyncResult => {
IPPacketInformation ipPacket;
int bytesReceived = socket.EndReceiveMessageFrom(
asyncResult,
ref socketFlags,
ref remoteEndPoint,
out ipPacket);
return new SocketReceiveMessageFromResult()
{
PacketInformation = ipPacket,
ReceivedBytes = bytesReceived,
RemoteEndPoint = remoteEndPoint,
SocketFlags = socketFlags
};
},
null));
}