|
Socket开发是属于通信底层的开发,.NET也提供了非常丰富的类来实现Socket的开发工作,本篇不是介绍这些基础类的操作,而是从一个大的架构方面阐述Socket的快速开发工作,本篇以TCP模式进行程序的开发介绍,以期达到抛砖引玉的目的。
要掌握或者了解Socket开发,必须了解下面所述的场景及知识。
1、TCP客户端,连接服务器端,进行数据通信
2、TCP服务器端,负责侦听客户端连接
3、连接客户端的管理,如登陆,注销等,使用独立线程处理
4、数据接收管理,负责数据的接受,并处理队列的分发,使用独立线程处理,简单处理后叫给“数据处理线程”
5、数据处理线程,对特定的数据,采用独立的线程进行数据处理
6、数据的封包和解包,按照一定的协议进行数据的封装和解包
针对以上内容,可以封装以下功能的操作类作为共用基类:
1、BaseSocketClient,客户端基类
2、BaseSocketServer,TCP服务器管理基类
3、BaseClientManager,连接客户端管理类
4、BaseReceiver,数据接收处理类
5、ThreadHandler,数据独立线程处理类
6、PreData、DataTypeKey、Sign分别是定义数据的基础格式、协议标识、分隔符号等,另外我们定义需要发送的实体类信息,发送和接收通过实体类进行数据转换和解析。
以上类是基类,不能直接使用,在服务器端和客户端都要继承相应的类来完成所需要的工作。
BaseSocketClient只要负责客户端的链接、断开、发送、接收等操作,大致的定义如下:
代码 public class BaseSocketClient{
public BaseSocketClient()
{
_Name = this.GetType().Name;
}
public BaseSocketClient(Socket socket) : this()
{
_socket = socket;
IPEndPoint ipAndPort = (IPEndPoint)socket.RemoteEndPoint;
_IP = ipAndPort.Address.ToString();
_port = ipAndPort.Port;
}
///
/// 断开连接
///
public virtual void DisConnect()
{
.........
}
///
/// 主动连接
///
public virtual void Connect(string ip, int port)
{
........
}
///
/// 开始异步接收
///
public void BeginReceive()
{
.........
}
///
/// 开始同步接收
///
public void StartReceive()
{
.........
}
///
///异步发送
///
public void BeginSend(SendStateObject sendState)
{
........
}
///
/// 同步发送。直接返回成功失败状态
///
public bool SendTo(string data)
{
.........
}
///
/// 主动检查连接
///
public virtual void CheckConnect()
{
.............
}
protected virtual void OnRead(PreData data)
{
}
}
NET技术:Socket开发探秘--基类及公共类的定义,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。