2017-12-01 18 views
1

UdpClient에 대한 일부 설정을 수행하고 Observable.Using(()을 사용하여 코드를 올바르게 입력 했습니까?코드 조각이 Rx-Core를 사용하는 UdpClient에 맞습니까?

다른 방법으로 작성 하시겠습니까? 코멘트에

요청에 따라
public static IObservable<UdpReceiveResult> UdpStream() 
    { 

     return Observable.Defer(() => 
     { 
      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, 514)); 


      return Observable.Using(() => receiverUDP, 
       udpClient => Observable.Defer(() => 
        udpClient.ReceiveAsync().ToObservable()).Repeat()); 
     }); 

    } 
+0

이 올바른지 : 개인적으로

public static IObservable<UdpReceiveResult> UdpStream() { return Observable.Defer(() => { 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, 514)); return Observable .Using( () => receiverUDP, udpClient => Observable .Defer(() => Observable .FromAsync(() => udpClient.ReceiveAsync())) .Repeat()); }); } 

, 나는 이런 식으로 할 거라고? 그것이 효과가 있다면 왜 시험해 보지 않으시겠습니까? – HimBromBeere

+0

작동합니다. 더 나은 방법이 있는지 확인하십시오. – user584018

+0

'.ToObservable()'없이 Observable.FromAsync (() => udpClient.ReceiveAsync())를 호출 할 것입니다. – Enigmativity

답변

1

을 :

public static IObservable<UdpReceiveResult> UdpStream() 
{ 
    return 
     Observable 
      .Using(
       () => 
       { 
        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, 514)); 
        return receiverUDP; 
       }, 
       udpClient => 
        Observable 
         .Defer(() => 
          Observable 
           .FromAsync(() => udpClient.ReceiveAsync())) 
         .Repeat()); 
} 
+0

에 속하기 때문에이 질문을 주제와 관련이 없으므로 투표를 끝내겠습니다. 고맙습니다 만, 두 번째 Observable에 'receiverUDP'를 사용하지 않았습니다 .... . udpClient '=> 관찰 가능한 .Defer (() => 관찰 가능한 .FromAsync (() => udpClient.ReceiveAsync())) .Repeat());' – user584018

+0

@ user584018 - 무슨 뜻인지 이해가 안 되니? 이 쿼리는 귀하와 동일한 쿼리 여야합니다. – Enigmativity

+0

감사합니다 ... 마지막 코멘트를 무시하십시오. – user584018