Ich lerne über Reaktive Erweiterungen und versuche, etwas von meinem Code neu zu factorisieren.Observable.FromAsyncPattern mit UDPClient.EndReceive und ref remote Endpunkt Parameter
UDPClient.EndReceive
nimmt einen ref IPEndPoint
Parameter, so habe ich zur Zeit diese Arbeit:
UdpClient receiverUDP = new UdpClient();
receiverUDP.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
receiverUDP.EnableBroadcast = true;
receiverUDP.Client.ExclusiveAddressUse = false;
receiverUDP.Client.Bind(new IPEndPoint(IPAddress.Any, 1234));
IPEndPoint ep = null;
var async = Observable.FromAsyncPattern<byte[]>(receiverUDP.BeginReceive, (i) => receiverUDP.EndReceive(i, ref ep));
var subscr = async().Subscribe(x => Console.WriteLine(ASCIIEncoding.ASCII.GetString(x)));
Was passiert, wenn meine Abonnenten Zugriff auf die Remote IPEndPoint benötigen? In meiner aktuellen Inkarnation verwende ich Ereignisse und gebe eine benutzerdefinierte Klasse zurück, die byte[]
und IPEndPoint
umschließt. Ich kann nicht für das Leben von mir, erarbeiten, wie man das mit Rx macht.
Dies ist die richtige Antwort, da es der neueste Weg ist, es zu tun ... – Tim