当前位置 > 首页 > Asp.net

.net cs TCP通信框架

2012-12-8 16:51:00来源:Asp.net

    .net cs TCP通信框架

 

版本1.0.0.1

开发主言c#

开发环境vs2008+.net framework 2.0

软件特点支持动软代码生成器所生成三层框架代码。支持阻塞式函数调用。可以用于聊天软件开发,以及简单游戏通信框架

解决了 cs程序开发过程中的直连数据库所造成的连接安全隐患的问题

解决了 webservice以及wcf开发时的性能问题以及开发效率的问题

解决了 与现有三层框架代码兼容的问题

解决了 cs程序用户间互相通信的问题

解决了 wince系统下gprs信号不稳定时程序使用的问题

服务器端示例介绍:

创建监听对象:

 

SocketListener listener = new SocketListener();

 

  启动监听并注册事件:

listener.BeforeDataReceive += new SocketListener.BeforeDataReceiveEventHandler(listener_BeforeDataReceive);
listener.DataReceive += new SocketListener.DataReceiveEventHandler(listener_DataReceive);
listener.ClientChanged +=new ClientChangedHandler(listener_ClientChanged);
listener.RegeditSession += new RegeditSessionEventHandler(listener_RegeditSession);
listener.StartListening();

  BeforeDataReceive 事件用于对通信框架事件接收前的判断是否需要处理。

  DataReceive          事件用框架未处理的数据。

  RegeditSession     用于用户登录。这里要以作为是否允许用户登录的判断。

  StartListening      用于开启监听。

  如果用于作为数据处理服务器需要对DbHelper.ConnectionString 属性进行初始化。

  DbHelper可以自定义用于支持不同数据库比如mysql,oracle,sqllite等。

服务器端示例截图:

  

客户端示例介绍:

MsSqlClient client

  客户端需要定义:MsSqlClient 与服务器端进行通信。

客户端的事件有:

DbHelperSQL.client = client;
client.SystemMessageRecv += new SocketClient.SystemMessageRecvEventHandler(client_SystemMessageRecv);
client.ClientChanged += new SocketClient.ClientChangedEventHandler(client_ClientChanged);
client.TextRecv += new SocketClient.TextRecvEventHandler(client_TextRecv);
client.Connected += new SocketClient.ConnectedEventHandler(client_Connected);
client.InitOnLineUsers += new SocketClient.InitOnLineUsersEventHandler(client_InitOnLineUsers);
client.ClosedConnected += new SocketClient.ClosedConnectedEventHandler(client_ClosedConnected);
client.StartClient();

  SystemMessageRecv 事件用于接收服务器端发送的通知。

  ClientChanged 事件用于处理其他用户的断开连接处理。

  TextRecv 事件用于接收其用户发送的文本消息。

  InitOnLineUsers 事件用于接收在线用户列表。

客户端提供的函数有:

My.Net.Tcp.MsSqlClient.ColumnExists(string, string)
My.Net.Tcp.MsSqlClient.ColumnExists(string, string, int)
My.Net.Tcp.MsSqlClient.ExecuteSql(string)
My.Net.Tcp.MsSqlClient.ExecuteSql(string, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.ExecuteSql(string, int)
My.Net.Tcp.MsSqlClient.ExecuteSql(string, int, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.ExecuteSqlTran(System.Collections.Generic.List<string>)
My.Net.Tcp.MsSqlClient.ExecuteSqlTran(System.Collections.Generic.List<My.Data.SqlClient.ModleInfo>)
My.Net.Tcp.MsSqlClient.ExecuteSqlTran(System.Collections.Generic.List<string>, int)
My.Net.Tcp.MsSqlClient.ExecuteSqlTran(System.Collections.Generic.List<My.Data.SqlClient.ModleInfo>, int)
My.Net.Tcp.MsSqlClient.Exists(string)
My.Net.Tcp.MsSqlClient.Exists(string, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.Exists(string, int)
My.Net.Tcp.MsSqlClient.Exists(string, int, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.GetMaxID(string, string)
My.Net.Tcp.MsSqlClient.GetMaxID(string, string, int)
My.Net.Tcp.MsSqlClient.GetSingle(string)
My.Net.Tcp.MsSqlClient.GetSingle(string, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.GetSingle(string, int)
My.Net.Tcp.MsSqlClient.GetSingle(string, int, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.MsSqlClient(System.Net.IPAddress, int)
My.Net.Tcp.MsSqlClient.MsSqlClient()
My.Net.Tcp.MsSqlClient.MsSqlClient(System.Net.IPAddress)
My.Net.Tcp.MsSqlClient.MsSqlClient(string)
My.Net.Tcp.MsSqlClient.Query(string)
My.Net.Tcp.MsSqlClient.Query(string, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.Query(string, int)
My.Net.Tcp.MsSqlClient.Query(string, int, params System.Data.SqlClient.SqlParameter[])
My.Net.Tcp.MsSqlClient.TabExists(string)
My.Net.Tcp.MsSqlClient.TabExists(string, int)

  这30个函数,包括一般代码生器所需要的所有的函数。

如果与其他用户通信你可以使用下面的6个函数:

My.Net.Tcp.SocketClient.SendToAllUser(string)
My.Net.Tcp.SocketClient.SendToAllUser(int, byte[])
My.Net.Tcp.SocketClient.SendToOtherUser(string, string)


  • SICP学习笔记(1.1.4~1.1.5)

    2009-9-8 0:39:00

    摘要: 书接上一回, 这里是我在学习SICP 1.1.4~1.1.5时的一些笔记, 内容包括 “标准过程与复合过程” “求值与代换模型” --------------------------

  • Asp.net MVC源码分析--UrlRoutingModule与Service Loaction的亲密接触

    2011-12-5 8:58:00

    这篇文章我们主要探讨UrlRoutingModule 如何截获HttpApplicatioin的管道事件,从而把Http Request 引入Mvc框架中的.分析这个过程需要我们用到UrlRouti

  • 动态创建类实例

    2009-10-7 10:52:00

    摘要: Python中要创建一个类的实例,要首先导入该类或者该类所属的模块,例如:[代码]或者[代码]如果要在程序中动态地创建类实例,也一样要分两步走,例如:[代码]但是要注意:如果myclass并

  • 我的框架(9)——关于默认值

    2009-11-23 16:22:00

    阅读: 144 评论: 1 作者: 陈鹏(偶是坏人) 发表于 2009-11-23 15:12 原文链接 说句实话,我根本没考虑去实现对默认值的支持。因为我觉得,既然用实体嘛,都面

  • 微软企业库源码解析——DAAB(四)DatabaseFactory小结

    2009-7-17 16:03:00

    经过三章的痛苦的源码解读过程,让我们来回顾一下DatabaseFactory是如何创建出正确的Database类的。 首先,给出MSDN中给出的DAAB的设计结构图 然后

  • DotNetNuke 6 即将正式发布!

    2011-7-15 10:04:00

    什么是DotNetNuke(简称DNN)?可能你们很多人已经耳熟能详,并且已经研究他很久,但是也可能你们是第一次听说DNN,所以我想不厌其烦的再次的说一下什么是DNN,以下介绍摘自 维基百科 。

  • .net 4.0如何得到EXCEL单元格中的文本?[

    2010-8-26 23:45:00

    range = worksheet.Cells[r + 2, i + 1] as Microsoft.Office.Interop.Excel.Range; //下面这句编译不能通

  • IT餐馆—第十回 潜伏

    2009-8-10 10:33:00

    摘要: 最近一段时间,老刘在MSN上的状态一直是脱机。雨辰想可能是老刘到了新公司事情比较多,没有时间或不方便白天联系。晚上八点多,雨辰到了家打开笔记本连上网,就看老刘终于在线上了。雨辰就发条

  • asp.net中使用jquery的ajax来post数据的树控件

    2011-6-21 17:07:00

    我相信大部门的.net开发人员还在完全使用asp.net框架开发或者有一部分人是asp.net和asp.net mvc项目都有在做。对于传统的asp.net如果要有好的体验,那么aj

  • .Net Framework Client Profile 和 .Net Framework

    2009-12-2 15:13:00

    .NET Framework Client Profile是.NET Framework的裁剪版本。它面向客户端应用程序。它提供 Windows Presentation Foundation (W