正在阅读:逐步教你使用.net进行Socket通信进阶篇逐步教你使用.net进行Socket通信进阶篇

2005-09-16 10:08 出处: 作者:rainlake 责任编辑:moningfeng

  我们再写一个继承自CollectionBase的类MessageCollection。用于存放消息队列。

1using System;
2
3namespace SocketLibrary
4{
5 public class MessageCollection:System.Collections.CollectionBase
6 {
7 public MessageCollection()
8 {
9
10 }
11 public void Add(Message value) {
12 List.Add(value);
13 }
14 public Message this[int index] {
15 get {
16 return List[index] as Message;
17 }
18 set{
19 List[index] = value;
20 }
21 }
22 public MessageCollection this[Connection connection] {
23 get {
24 MessageCollection collection = new MessageCollection();
25 foreach(Message message in List) {
26 if(message.SendToOrReceivedFrom == connection)
27 collection.Add(message);
28 }
29 return collection;
30 }
31 }
32 }
33}


  好了。协议制定完了,下面我们修改SocketBase的Listenning函数。当网络流可读时,我们就读出一个message格式的消息。并且在SocketBase中定义ConnectionClose、MessageReceived事件。并且在SocketBase的Listenning中根据情况触发。

  再在SocketBase中增加一个MessageConnection型的属性。表示要发送的消息队列。

  我们需要再启动一个线程。用于从消息队列中取出要发送的消息并发送。

  最后源代码如下。在这个源代码中在停止时我们没有关闭网络连接。请自行关闭。

  在最后的优化中,上面提到的源代码做了一定的修改,请从本文顶端下载源代码查看(点击查看附件
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品