当前位置 > 首页 > Asp.net

.net cs TCP通信框架

12/8/2012 4:51:00 PM来源: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)


  • CodeDomProvider - Targeting .Net 3.5

    8/31/2007 10:09:00 AM

    If your using a CodeDomProvider to compile code yourself programmatically in VS 2008, what version

  • Qt开发环境的建立

    11/7/2009 11:14:00 PM

    阅读: 121 评论: 2 作者: feisky 发表于 2009-11-07 21:39 原文链接 开发模式 : 在宿主机Federa上通过qvfb来模拟帧缓冲 开发完毕后

  • Fed Up With System.Data.Metadata.Edm.ObjectItemAssemblyLoader

    8/25/2010 7:46:00 PM

    I’m fed up with the random errors I’m getting on my ASP.NET 4, Entity Framework 4 web application l

  • 【LeanEAP.NET】精益企业应用平台----系列目录

    5/30/2012 11:55:00 PM

    基础设计篇 【LeanEAP.NET】精益企业应用平台设计----功能设计 设计的目标是为快速构建企业应用系统提供解决方案。以精益开发的思想,为开发人员提供一个快速开发企业应用的平

  • Log4Net 全方位跟踪程序运行

    5/13/2011 5:34:00 PM

    前端日子自己写了一个简单的日志跟踪程序,现在目前正在做的一个项目中使用以便于跟踪程序异常和运行状况,但是被否认了!可能是没有权威性,于是自己总结了一下Log4net日志跟踪系统,这里分享大家学习

  • Umbraco.org - Open Source CMS for .Net

    4/15/2007 2:15:00 PM

    In the last 30 days, weve started exploring CMS solutions for some of our marketing sites. These si

  • Label vs Literal in ASP.NET

    3/23/2011 8:52:00 PM

    Unlike the Label control, the Literal control does not render any additional html tags thats wh

  • A*算法

    7/20/2009 6:53:00 PM

    摘要: NB的算法,不敢独享,拿来分享一下》下面是源代码:1. <html><headz><title>useA*tofindpath...</title&

  • 绝对受用的TFS操作指南

    7/10/2009 5:11:00 PM

    1. Client Install software : VS 2008, TFS Explorer( downloads ) 2. Launch VS 200

  • C#3.0笔记(一)预备知识之Delegate

    4/6/2009 12:20:00 AM

    摘要: 在学习C#3.0之前还是先来回顾下委托、事件,因为这样能更加有助于理解C#3.0里面的一些新的特性,如Lambada表达式等。背景在C语言中我们可以用函数指针来创建回调函数,但是在C里面回调