当前位置 > 首页 > 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)


  • VS.NET & Vista

    2007-2-8 16:28:00

    I have had about 5 people ask me about Visual Studio .NET 2003/2005 and Windows Vista, so I thought

  • rails与jsonp

    2010-1-5 0:52:00

    阅读: 211 评论: 0 作者: 司徒正美 发表于 2010-01-04 22:11 原文链接 涉及后台的东西,我也不敢保证对错,总之写出来如果有错望各位高人不吝赐教吧。跨域的需要大多数

  • 【ASP.NET Web API教程】4.2 路由与动作选择

    2012-12-4 12:50:00

    注: 本文是【 ASP.NET Web API系列教程 】的一部分,如果您是第一次看本系列教程,请先看前面的内容。 4.2 Routing and Action Selection 4.2 路由

  • Visual C++2008 C++ TR1 随机数编程笔记

    2009-6-18 1:19:00

    At the core of any pseudorandom number generation software is a routine for generating uniformly di

  • 网页信息抓取-如何获取延迟加载的网页数据

    2009-5-19 18:44:00

    摘要: 抓取网页信息时,有一个一直困扰我的问题,那就是有些网页的信息是动态生成的,网页载入后,接着执行js,js从服务器端获取数据后填充到网页,现在这种网页实现特别比较多,归功于ajax技术的使用了

  • Remember the Love...

    2007-2-15 2:17:00

    Read the .NET Love Story Share the love with everyone...

  • Web Spider提取编码方法总结

    2007-1-24 8:53:00

    摘要: 本文总结了Web Spider提取编码的四种方法 1,通过分析Header提取编码 2,通过分析BOM(Byte Order Mark)提取编码 3,通过分析页面的meta提取编码

  • ASP.NET MVC Best Practices (Part 1)

    2009-4-2 0:27:00

    In this post, I will share some of the best practices/guideline in developing ASP.NET MVC applicati

  • Blend 3.0入门之SketchFlow详解(上)

    2009-11-3 13:16:00

    阅读: 442 评论: 4 作者: 双宇 发表于 2009-11-02 22:54 原文链接 SketchFlow是新加入Expression Blend的一个插件,主要用于程序的原型设计

  • 理解ASP.NET MVC(1):ASP.NET MVC基于MVC设计模式

    2011-8-20 19:28:00

    MVC 是一种软件设计模式; ASP.NET MVC 是基于 MVC 设计模式的。 MVC 是 20 世纪 80 年代 Xer