您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

逐步教你使用.net进行Socket通信进阶篇

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-1-30 我要参与讨论

 

  上一章我们讲到了如何用TcpListener侦听连接以及如何使用TcpClient建立一个连接并发送消息(一步一步教你使用.net进行Socket通信)。本文源代码下载(附件

  这一章我们将深入讲解如何定义网络通迅协议及如何使用这个协议进行通迅。

  首先我们先重构一下前章提到的网络通迅组件。

  我们知道在服务器端和客户端都要侦听是否对方发来消息,如果只在主线程中运行,那我们就没法进行其它如UI等方面的工作了。我们将Listen这个方法提出来放到一个基类中。

  新建一个类SocketBase。让Server和Client两个类都继承自这个类。将Server类中的Connections属性放到这个类中(因为Client中也可能有多个连接),由于客户端也要侦听服务器发来的消息,因此我们将_listenningthread和Listenning函数也放到类中。并把private型的变量改为protected以便于继承类可以使用。将Listening函数改为virtual型以便于子类中可以重写。

  下面我们定义网络协议如下:
  一个消息体包含消息头和消息体两部分。消息体为字符串型。

  消息头包含3部分,前4个字节为消息的总长度,第5个字节表示命令,第6、7两个字节表示协议版本号。按此协议,我们定义Message类,源代码如下:

1using System;
2
3namespace SocketLibrary
4{
5 public class Message
6 {
7 public enum CommandHeader:byte {
8 SendMessage = 1
9 }
10 public Connection SendToOrReceivedFrom;
11 public int MessageLength;
12 public CommandHeader Command;
13 public byte MainVersion;
14 public byte SecondVersion;
15
16 public string MessageBody;
17
18 public Message()
19 {
20 SendToOrReceivedFrom = null;
21 }
22 public Message(CommandHeader command,byte mainVersion,byte secondVersion,string messageBody):this() {
23 this.Command = command;
24 this.MainVersion = mainVersion;
25 this.SecondVersion = secondVersion;
26 this.MessageBody = messageBody;
27 }
28}


  我们在Message中增加一个Conn

[1] [2] [3] [4] 下一页

在google里搜索更多逐步教你使用.net进行Socket通信进阶篇

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明