Je suis en train d'étudier les extensions réactives et d'essayer de factoriser une partie de mon code.Observable.FromAsyncPattern avec UDPClient.EndReceive et le point de terminaison distant ref Paramètre
UDPClient.EndReceive
prend un paramètre ref IPEndPoint
, j'ai donc actuellement ce travail:
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)));
si mes abonnés ont besoin d'accéder à la IPEndPoint à distance? Dans mon incarnation actuelle, j'utilise des événements et je repasse une classe personnalisée qui enveloppe byte[]
et IPEndPoint
. Je ne peux pas pour la vie de moi, travailler sur comment faire cela avec Rx.
Fait cette bonne réponse car c'est la dernière façon de le faire ... – Tim