2017-05-16 20 views
0

データ受信用のDatagramSocketでテストプログラムを作成しました。しかし、5または6パケットを受信した後、これ以上のパケットを受信しません!DatagramSocketソケット受信パケットの停止

誰にでも解決策がありますか?

私のテストコードは次のとおりです。

public MainPage() 
{ 
    this.InitializeComponent(); 
} 

private void Page_Loaded(object sender, RoutedEventArgs e) 
     { 

      Listen(); 
     } 
private async void Listen() 
    { 
     try 
     { 
      Windows.Networking.Sockets.DatagramSocket socket = new Windows.Networking.Sockets.DatagramSocket(); 

      socket.MessageReceived += Socket_MessageReceived; 

      //You can use any port that is not currently in use already on the machine. 
      string serverPort = "1337"; 

      //Bind the socket to the serverPort so that we can start listening for UDP messages from the UDP echo client. 
      await socket.BindServiceNameAsync(serverPort); 
     } 
     catch (Exception e) 
     { 
      //Handle exception. 
     } 
    } 

    public async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args) 
    { 
     //Read the message that was received from the UDP echo client. 
     Stream streamIn = args.GetDataStream().AsStreamForRead(); 
     StreamReader reader = new StreamReader(streamIn); 

     string message = await reader.ReadLineAsync(); 


     await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
      () => 
      { 
       Alpha.Text = message; 


      } 
      ); 
     } 

私はそれはそれを取得しますが、私のVisual Studioソリューションで、それは動作しません、私はデータを受け付けておりますことを確認するためのwiresharkでトレースしています。

+0

ターゲットソリューションの[ネットワーク機能](https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/enable-device-capabilities)が有効になっているかどうかを確認しましたか? – MrPaulch

+0

はいいいえ – Faraz

+0

もこれに取り組んでいます..何らかの理由でUWPで動作しない –

答えて

1

あなたがあなたのUDPリスナーの別のインスタンスを開くか、あなたは間違った場所に初期化であることを起こるからです!

0

Control.InboundBufferSizeInBytesを使用しましたが、正しく動作します。

 listener = new DatagramSocket(); 
     listener.MessageReceived += MessageReceived; 
     listener.Control.InboundBufferSizeInBytes = 1; 

     await listener.BindServiceNameAsync("1337"); 
関連する問題