30、Stream socket

 

1、Start StreamSocketListener :

     StreamSocketListener 将创建一个链接的 'server' 边。它监听一个‘service name’(通常为一个端口号)

然后当收到一个链接时调用一个回调,通常是其它应用程序请求建立链接时发生。当收到一个链接,需要再次调用

这个 acceptAsync()。

 

操作截图 :

 

点击按钮 'Listen' :

 

页面的 xaml :

<TextBox x:Name="ServiceNameForListener" Text="22112"  />
<Button x:Name="StartListener" Content="Listen"  Click="StartListener_Click"/>

 

相应的 C#  :

   private async void StartListener_Click(object sender, RoutedEventArgs e)
   {
      //覆盖侦听器是安全的,如果所有引用都没有了它就会被
//删除。但是在很多情况下覆盖原有数据是危险的,在这里我们阻止它
       if (CoreApplication.Properties.ContainsKey("listener"))
       {
          //已经被初始化,并执行了
           return;
       }

       if (String.IsNullOrEmpty(ServiceNameForListener.Text))
       {
          //需要提供一个服务名字
           return;
       }

       StreamSocketListener listener = new StreamSocketListener();
       listener.ConnectionReceived += OnConnection;

       // Save the socket, so subsequent steps can use it.
       CoreApplication.Properties.Add("listener", listener);

       // Start listen operation.
       try
       {
           await listener.BindServiceNameAsync(ServiceNameForListener.Text);
           rootPage.NotifyUser("Listening", NotifyType.StatusMessage);
       }
       catch (Exception exception)
       {
           CoreApplication.Properties.Remove("listener");
           
           // If this is an unknown status it means that the error is fatal and retry will likely fail.
           if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
           {
               throw;
           }

           rootPage.NotifyUser("Start listening failed with error: " + exception.Message, NotifyType.ErrorMessage);
       }
   }

 

 

posted @ 2012-09-29 13:02  博琼  阅读(495)  评论(0)    收藏  举报