dotnet/runtime

Inconsistent behavior of Dgram Socket.Disconnect

Open

#34,473 opened on 2020年4月2日

GitHub で見る
 (4 comments) (0 reactions) (0 assignees)C# (5,445 forks)batch import
area-System.Net.Socketsenhancementhelp wantedtenet-compatibility

Repository metrics

Stars
 (17,886 stars)
PR merge metrics
 (平均マージ 12d 11h) (30d で 661 merged PRs)

説明

Socket.Disconnect(boolean) method called on UDP socket behaves differently on different platforms. On Linux (Ubuntu 18.04.03 LTS) x64 it doesn't throw exception. On Windows 10 I get the following exception:

Message: 
    System.Net.Sockets.SocketException : A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.
  Stack Trace: 
    Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
    Socket.Disconnect(Boolean reuseSocket)

Probably, behavior on Windows 10 is correct because UDP is connectionless protocol.

Version is .NET Core 3.1.201.

コントリビューターガイド