/// <summary> /// Extends BeginReceiveMessageFrom so that when a state object is not needed, null does not need to be passed. /// <example> /// socket.BeginReceiveMessageFrom(buffer, offset, size, socketFlags, remoteEP, callback); /// </example> /// </summary> public static IAsyncResult BeginReceiveMessageFrom(this Socket socket, Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback) { if(socket == null) throw new ArgumentNullException("socket"); return socket.BeginReceiveMessageFrom(buffer, offset, size, socketFlags, ref remoteEP, callback, null); }
/// <summary> /// Extends BeginReceiveMessageFrom so that buffer offset of 0 and call to Array.Length are not needed. /// <example> /// socket.BeginReceiveMessageFrom(buffer, socketFlags, remoteEP, callback); /// </example> /// </summary> public static IAsyncResult BeginReceiveMessageFrom(this Socket socket, Byte[] buffer, SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback) { if(socket == null) throw new ArgumentNullException("socket"); if(buffer == null) throw new ArgumentNullException("buffer"); return socket.BeginReceiveMessageFrom(buffer, 0, buffer.Length, socketFlags, ref remoteEP, callback); }
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); }