Laden...

Warum kann ich bei einer Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?

Erstellt von CrocodileDundee vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.572 Views
C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 4 Jahren
Warum kann ich bei einer Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?

Hallo zusammen,
warum kann ich eigentlich bei der einer der Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?

Diesen habe ich doch schon bei der Connect-Methode festgelegt.

Danke und Gruß
Frank

T
2.219 Beiträge seit 2008
vor 4 Jahren

Siehe Hinweis Text unten.
Wenn du bereits eine Verbindung mit Connect aufgebaut hast, dann darfst du diese Methode nicht aurufen.
Diese wirft dann eine SocketException!

Link:
https://docs.microsoft.com/de-de/dotnet/api/system.net.sockets.udpclient.send?view=netframework-4.8#System_Net_Sockets_UdpClient_Send_System_Byte___System_Int32_System_Net_IPEndPoint_

Nachtrag:
Die Doku und der Reference Code scheinen hier nicht zu stimmen bzw. ist der Hinweis Text nicht korrekt.
Hier wird eine InvalidOperationException geworfen, wenn über Connect bereits eine Verbindung besteht.
Steht auch so bei den Ausnahmen der Methode.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

P
441 Beiträge seit 2014
vor 4 Jahren

Das liegt am Unterschied zwischen Verbindungslosem und Verbindungsorientiertem Protokoll.
UDP ist generell ein Verbindungsloses Protokoll (heißt, es existiert keine logische Verbindung zwischen zwei Sockets) und wenn du sendest ist es dir egal, ob es jemand am anderen Ende liest - das bekommst du einfach nicht mit.

Deswegen kann man mit einem UDPClient einfach auch dauernd an andere Endpunkte senden.
Mit einem TCPClient geht das nicht, denn der braucht immer erst eine Verbindung.