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