- 로컬 커넥션
    - 로컬 환경에서의 실버라이트 응용 프로그램간의 데이터 송수신

- 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
Posted by holland14
: