0%

.Net中Remoting通信机制简单实例 - JiYF - 博客园

Excerpt

.Net中Remoting通信机制 前言: 本程序例子实现一个简单的Remoting通信案例 本程序采用语言:c# 编译工具:vs2013工程文件 编译环境:.net 4.0 程序模块: Test测试 Talker Server端 Client端 源代码工程文件下载 Test测试程序截图: Talk


.Net中Remoting通信机制

前言:

本程序例子实现一个简单的Remoting通信案例

  本程序采用语言:c#

  编译工具:vs2013工程文件

  编译环境:.net 4.0

程序模块:

  • Test测试
  • Talker
  • Server端
  • Client端
  • 源代码工程文件下载

Test测试程序截图:

Talker类:

复制代码

1
2
3
4
5
6
7
8
<span>1</span> <span>public</span> <span>class</span><span> Talker : MarshalByRefObject
</span><span>2</span> <span> {
</span><span>3</span> <span>public</span> <span>void</span> Talk(<span>string</span><span> word)
</span><span>4</span> <span> {
</span><span>5</span> <span> System.Console.WriteLine(word);
</span><span>6</span> <span> }
</span><span>7</span>
<span>8</span> }

复制代码

Server端:

复制代码

1
2
3
4
5
6
7
8
9
<span>1</span>  <span>//</span><span>注册通道</span>
<span>2</span> TcpServerChannel channel = <span>new</span> TcpServerChannel(<span>"</span><span>TalkChannel</span><span>"</span>,<span>8090</span><span>);
</span><span>3</span> ChannelServices.RegisterChannel(channel,<span>true</span><span>);
</span><span>4</span>
<span>5</span> <span>//</span><span>注册远程对象</span>
<span>6</span> <span> RemotingConfiguration.RegisterWellKnownServiceType(
</span><span>7</span> <span>typeof</span><span>(Talker),
</span><span>8</span> <span>"</span><span>Talker</span><span>"</span><span>,
</span><span>9</span> WellKnownObjectMode.SingleCall);

复制代码

Client端:

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<span> 1</span>   <span>public</span> <span>partial</span> <span>class</span><span> Form1 : Form
</span><span> 2</span> <span> {
</span><span> 3</span> <span>private</span> Talker _talk = <span>null</span><span>;
</span><span> 4</span> <span>public</span><span> Form1()
</span><span> 5</span> <span> {
</span><span> 6</span> <span> InitializeComponent();
</span><span> 7</span> <span> }
</span><span> 8</span>
<span> 9</span> <span>private</span> <span>void</span> btnSend_Click(<span>object</span><span> sender, EventArgs e)
</span><span>10</span> <span> {
</span><span>11</span> <span>if</span> (btnSend.Text.Equals(<span>"</span><span>开始</span><span>"</span><span>))
</span><span>12</span> <span> {
</span><span>13</span> timer1.Enabled = <span>true</span><span>;
</span><span>14</span> btnSend.Text = <span>"</span><span>结束</span><span>"</span><span>;
</span><span>15</span> <span> }
</span><span>16</span> <span>else</span>
<span>17</span> <span> {
</span><span>18</span> timer1.Enabled = <span>false</span><span>;
</span><span>19</span> btnSend.Text = <span>"</span><span>开始</span><span>"</span><span>;
</span><span>20</span> <span> }
</span><span>21</span> <span> }
</span><span>22</span>
<span>23</span> <span>private</span> <span>void</span> sendMsg(<span>string</span><span> msg)
</span><span>24</span> <span> {
</span><span>25</span> <span>try</span>
<span>26</span> <span> {
</span><span>27</span> <span>//</span><span>操作远程对象</span>
<span>28</span> <span> _talk.Talk(msg);
</span><span>29</span> <span>string</span> newline = msg +<span> Environment.NewLine;
</span><span>30</span> txtContent.Text = txtContent.Text.Insert(<span>0</span><span>, newline);
</span><span>31</span> <span> }
</span><span>32</span> <span>catch</span><span> (Exception ex)
</span><span>33</span> <span> {
</span><span>34</span> <span> MessageBox.Show(ex.Message);
</span><span>35</span> <span> }
</span><span>36</span> <span> }
</span><span>37</span>
<span>38</span> <span>private</span> <span>void</span> Form1_Load(<span>object</span><span> sender, EventArgs e)
</span><span>39</span> <span> {
</span><span>40</span> <span>try</span>
<span>41</span> <span> {
</span><span>42</span> timer1.Interval = <span>1000</span><span>;
</span><span>43</span> <span>//</span><span>注册通道</span>
<span>44</span> TcpClientChannel channel = <span>new</span><span> TcpClientChannel();
</span><span>45</span> ChannelServices.RegisterChannel(channel, <span>true</span><span>);
</span><span>46</span> <span>//</span><span>获取远程对象</span>
<span>47</span> _talk = (Talker)Activator.GetObject(<span>typeof</span>(Talker), <span>"</span><span>TCP://localhost:8090/Talker</span><span>"</span><span>);
</span><span>48</span> <span> }
</span><span>49</span> <span>catch</span><span> (Exception ex)
</span><span>50</span> <span> {
</span><span>51</span> <span> MessageBox.Show(ex.Message);
</span><span>52</span> <span> }
</span><span>53</span> <span> }
</span><span>54</span>
<span>55</span> <span>private</span> <span>void</span> timer1_Tick(<span>object</span><span> sender, EventArgs e)
</span><span>56</span> <span> {
</span><span>57</span> <span> sendMsg(txtWord.Text.Trim());
</span><span>58</span> }

复制代码

源代码工程文件下载:

  源代码工程文件下载 https://files.cnblogs.com/files/JiYF/RemotingSolution.rar