We still have a few gaps in our Socket APIs where we are missing support for Task, Span/Memory, or CancellationToken.
This is a mega-issue to track all remaining work here for 6.0.
Async Socket APIs:
publicstaticValueTask<Socket>AcceptAsync(thisSocketsocket,CancellationTokencancellationToken);publicstaticValueTask<Socket>AcceptAsync(thisSocketsocket,SocketacceptSocket,CancellationTokencancellationToken);
publicstaticValueTask<int>SendToAsync(thisSocketsocket,ReadOnlyMemory<byte>buffer,SocketFlagssocketFlags,EndPointremoteEP,CancellationTokencancellationToken=null);publicstaticValueTask<SocketReceiveFromResult>ReceiveFromAsync(thisSocketsocket,Memory<byte>buffer,SocketFlagssocketFlags,EndPointremoteEP,CancellationTokencancellationToken=null);publicstaticValueTask<SocketReceiveMessageFromResult>ReceiveMessageFromAsync(thisSocketsocket,Memory<byte>buffer,SocketFlagssocketFlags,EndPointremoteEP,CancellationTokencancellationToken=null);
publicValueTaskSendFileAsync(string?fileName,CancellationTokencancellationToken=default);publicValueTaskSendFileAsync(string?fileName,ReadOnlyMemory<byte>preBuffer,ReadOnlyMemory<byte>postBuffer,TransmitFileOptionsflags,CancellationTokencancellationToken=default);
publicstaticValueTaskDisconnectAsync(thisSocketsocket,boolreuseSocket,CancellationTokencancellationToken=default);
Sync Socket APIs:
publicintSendTo(ReadOnlySpan<byte>buffer,EndPointremoteEP);publicintSendTo(ReadOnlySpan<byte>buffer,SocketFlagssocketFlags,EndPointremoteEP);publicintReceiveFrom(Span<byte>buffer,refEndPointremoteEP);publicintReceiveFrom(Span<byte>buffer,SocketFlagssocketFlags,refEndPointremoteEP);publicintReceiveMessageFrom(Span<byte>buffer,refSystem.Net.Sockets.SocketFlagssocketFlags,refSystem.Net.EndPointremoteEP,outSystem.Net.Sockets.IPPacketInformationipPacketInformation);
publicvoidSendFile(stringfileName,ReadOnlySpan<byte>preBuffer,ReadOnlySpan<byte>postBuffer,TransmitFileOptionsflags);
Async TcpListener APIs:
publicValueTask<Socket>AcceptSocketAsync(CancellationTokencancellationToken);publicValueTask<TcpClient>AcceptTcpClientAsync(CancellationTokencancellationToken);
Async TcpClient APIs:
namespaceSystem.Net.Sockets{publicclassTcpClient:IDisposable{publicTaskConnectAsync(IPEndPointremoteEP);publicValueTaskConnectAsync(IPEndPointremoteEP,CancellationTokencancellationToken);}}UdpClient APIs:
publicclassUdpClient{publicintSend(ReadOnlySpan<byte>datagram);publicintSend(ReadOnlySpan<byte>datagram,IPEndPointendPoint);publicintSend(ReadOnlySpan<byte>datagram,stringhostname,intport);publicValueTask<int>SendAsync(ReadOnlyMemory<byte>datagram,CancellationTokencancellationToken);publicValueTask<int>SendAsync(ReadOnlyMemory<byte>datagram,IPEndPointendPoint,CancellationTokencancellationToken);publicValueTask<UdpReceiveResult>ReceiveAsync(CancellationTokencancellationToken);}Related issues
We still have a few gaps in our Socket APIs where we are missing support for Task, Span/Memory, or CancellationToken.
This is a mega-issue to track all remaining work here for 6.0.
Async Socket APIs:
Sync Socket APIs:
Async TcpListener APIs:
Async TcpClient APIs:
UdpClient APIs:
Related issues