Local Connection

1) 서로 다른 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.

2) 하나의 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.

 

LocalMessageSender와 LocalMessageReceiver의 두 가지 클래스를 제공합니다.

 

LocalMessageSender

보낼때 사용.

ReceiverDomain : 수신할 Receiver가 속한 도메인

ReceiverName : 수신할 Receiver의 고유 값

SendAsync() : 메시지를 전달하고자 할 경우 사용.

SendCompleted : 메시지가 전달된 경우 발생하는 이벤트

 

LocalMessageReceiver

받을때 사용.

NameScope : 같은 도메인상의 실버라이트에서 받을 것인지 다른 도메인상의 실버라이트에서 받을 것인지를 의미.

ReceiverName : LocalMessageReceiver의 이름

Listen() : 메시지 수신을 위해 사용하는 메서드.

MessageReceived : 메시지를 수신하면 발생하는 이벤트

 

전송 (LocalMessageSender)

 

MainPage.xaml

<Grid x:Name="LayoutRoot" Width="200" HorizontalAlignment="Center" VerticalAlignment="Center">
 <Grid.RowDefinitions>
  <RowDefinition Height="30" />
  <RowDefinition Height="Auto" />
 </Grid.RowDefinitions>
 <TextBlock Grid.Row="0" Text="전달한 문장을 입력해 주세요" />
 <TextBox x:Name="MyTextBox" Grid.Row="1" />
</Grid> 

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageSenderTest
{
 public partial class MainPage : UserControl
 {
  private LocalMessageSender localMessageSender;
  public MainPage()
  {
   InitializeComponent();
   
   localMessageSender= new LocalMessageSender("MyLocalReceiver");
   MyTextBox.TextChanged += new TextChangedEventHandler(MyTextBox_TextChanged);
  }
  void MyTextBox_TextChanged(object sender, TextChangedEvnetArgs e)
  {
   localMessageSender.SendAsync(MyTextBox.Text);
  }
 }
} 

수신 (LocalMessageReceiver)


해당 솔루션에서 새 프로젝트를 추가합니다.

 

MainPage.xaml 

<Grid x:Name="LayoutRoot" Width="200" HorizontalAlignment="Center" VerticalAlignment="Center">
 <Grid.RowDefinitions>
  <RowDefinition />
  <RowDefinition />
 </Grid.RowDefinitions>
 <TextBlock Grid.Row="0" Text="전달받은 문장은 다음과 같습니다" />
 <TextBlock x:Name="MyTextblock" Grid.Row="1" Foreground="Blue" FontSize="15" />
</Grid> 

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageReceiverTest
{
 public partial class MainPage : UserControl
 {
  private LocalMessageReceiver localMessageReceiver;
  public MainPage()
  {
   InitializeComponent();
   localMessageReceiver = new LocalMessageReceiver("MyLocalReceiver");
   localMessageReceiver.MessageReceived += new EventHandler<MessageReceivedEventArgs>(localMessageReceiver_MessageReceived);
   localMessageReceiver.Listen();
  }
  void localMessageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e)
  {
   MyTextBlock.Text=e.Message;
  }
 }
} 

 

이제, 위 두 프로젝트를 동시에 실행시키기 위해 솔루션 설정을 변경해야 합니다.

솔루션에서 마우스 오른클릭을 하여 메뉴에서 속성을 클릭합니다.

 

LocalMessageReseiverTest와 LocalMessageSenderTest의 작업을

'시작'으로 변경하고 확인을 누릅니다.

 

http://myifu.com/_study/silverlight/template_network_sender/ 

http://myifu.com/_study/silverlight/template_network_receiver/

 

Sender 브라우저에서 입력한 문자열이 Receiver 브라우저에서 출력되는 것을 확인할 수 있다.