로컬 커넥션
.NET프로그래밍/Silverlight 3.0 2009. 12. 8. 11:35 |- 로컬 커넥션
- 로컬 환경에서의 실버라이트 응용 프로그램간의 데이터 송수신
- LocalMessageSender 클래스
- 로컬 인스턴스로 문자열을 보내주는 클래스
- SendAsyc 메서드
- LocalMessageReceiver 클래스
- 넘겨받은 문자열을 받아서 처리해주는 클래스
- MessageReceived 이벤트
- Listen() 메서드 : 문자열 받기 대기 상태로 전환
"새 프로젝트"만들기로 "RiaRiaLocalMessageSender"를 만들고 "MainPage.xaml"과 "MainPage.xaml.cs"에 다음과 같이 코딩한다.
[MainPage.xaml]
<UserControl x:Class="RiaLocalMessageSender.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<TextBox x:Name="first"></TextBox>
<TextBlock Text="+"></TextBlock>
<TextBox x:Name="second"></TextBox>
<Button x:Name="btnCalc" Content="다른 곳으로 전달해서 계산"></Button>
</StackPanel>
</Grid>
</UserControl>
[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 RiaLocalMessageSender
{
public partial class MainPage : UserControl
{
// 로컬 네트워크로 데이터 전송
private LocalMessageSender lms;
public MainPage()
{
InitializeComponent();
lms = new LocalMessageSender("Calc");
lms.SendCompleted += new EventHandler<SendCompletedEventArgs>(lms_SendCompleted);
this.btnCalc.Click += new RoutedEventHandler(btnCalc_Click);
}
void lms_SendCompleted(object sender, SendCompletedEventArgs e)
{
MessageBox.Show("로컬로 전송되었습니다.");
}
void btnCalc_Click(object sender, RoutedEventArgs e)
{
lms.SendAsync(first.Text + "," + second.Text); // 2개의 수를 콤마로 구분해서 전달(로컬로...)
}
}
}
다시 "새 프로젝트"만들기로 "RiaLocalMessageReceiver"를 만들고(여기서는 Visual Studio를 하나 더 열어서 "RiaLocalMessageReceiver"를 만들었다.) "MainPage.xaml"과 "MainPage.xaml.cs"에 다음과 같이 코딩한다.
[MainPage.xaml]
<UserControl x:Class="RiaLocalMessageReceiver.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock x:Name="result"></TextBlock>
</Grid>
</UserControl>
[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 RiaLocalMessageReceiver
{
public partial class MainPage : UserControl
{
// 로컬 네트워크에서 전송된 값을 받기
private LocalMessageReceiver lmr;
public MainPage()
{
InitializeComponent();
lmr = new LocalMessageReceiver("Calc");
lmr.MessageReceived += new EventHandler<MessageReceivedEventArgs>(lmr_MessageReceived);
lmr.Listen(); // 대기(넘겨줄 때까지)
}
void lmr_MessageReceived(object sender, MessageReceivedEventArgs e)
{
string[] arr = e.Message.Split(','); // 3,5
int first = Convert.ToInt32(arr[0]); // 3
int second = Convert.ToInt32(arr[1]); // 5
this.result.Text = (first + second).ToString(); // 8
}
}
}
* 여기서는 Visual Studio를 2개 열어서 실행하였으므로, "RiaRiaLocalMessageSender"프로젝트 파일과 "RiaLocalMessageReceiver"프로젝트 파일을 따로 열어서 실행(F5 / Ctl + F5)하여 결과를 확인해본다.
[실행결과]
'.NET프로그래밍 > Silverlight 3.0' 카테고리의 다른 글
Silverlight에서 CSS 접근 (0) | 2009.12.09 |
---|---|
Silverlight에서 HTML 접근 (0) | 2009.12.08 |
Navigation Framework 사용 (0) | 2009.12.08 |
Navigation Application (0) | 2009.12.08 |
다중 페이지 구성 (0) | 2009.12.08 |