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


  • 《SCRUM敏捷项目管理》书评

    2007-10-9 23:09:00

    双方前锋紧紧地站在一起,裁判哨声响起,球被掷出,双方球员奋力拼搏,反复地冲刺,竭尽全力向自己的目标冲去。这是英式橄榄球中Scrum的场景。然而这样的活动,却被Ken Schwaber和 Jeff S

  • LoadTest for Backend service

    2007-6-11 22:10:00

    明天要去跟BOSS show 这东东,先拿出来跟大家聊聊。 download ppt 大家都知道做一个产品的loadTest,是比较麻烦也是比较困难的事, 对于一个系统我们所需要关注的指标有哪

  • 一个简单的Actor模型实现(上)

    2009-5-11 21:02:00

    Actor模型   Actor模型为并行而生,具 Wikipedia中的描述 ,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什

  • 【ASP.NET】根据条件循环插入数据,并设置相关字段

    2011-5-21 10:53:00

    我想实现类似于GOOGLE搜索下拉关键字功能。我的实现思路是这样的:首先用户在搜索数据的同时处理数据与指定表中数据比较,如果没有该数据把数 据保存起来,同时记录搜索次数。之后利用AJA

  • Entity Framework 学习初级篇1--EF基本概况

    2009-5-7 21:07:00

    最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品。不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善。而且,现在基本上所有数据库均提供了对EF的

  • Video: Binding Data to ASP.NET 2.0 Server Controls

    2007-3-26 9:34:00

    In my last blog entry I wrote about how to bind data to different ASP.NET 2.0 server controls using

  • DayPilotCalendar:像OutLook一样的 计划任务日程表 控件,for asp.net2.0

    2007-5-10 11:13:00

    摘要: 这个控件看起来不错。 功能: 1:提供Calendar的ContextMenu,右键调出。回发处理方式多样。支持AJAX 2:视图多种:可以显示天任务,也可以显示多天的,比方说1周内的

  • (牛人莫入)Silverlight 3 子窗体调用WebService

    2009-8-2 17:52:00

    等了好长的时间,SL3中文版本终于出来,抽周未有空来给体验一下SL3;它对于RIA开发有很大的帮助,开发上更简单;对于过多的话我就不多说;先来看一个示例吧: 这个示例用到了SL3中的子窗体,We

  • Oslo and the Entity Framework

    2009-8-18 10:31:00

    Doug Purdy announced that the Oslo and the Data Programmability team were merged. Since I first

  • c#下实现ping操作

    2009-8-16 23:52:00

    摘要: C#下实现Ping操作。介绍了3种方法,1、传统方式(Socket类实现ICMP协议) 2、调用Ping并捕捉输出 3、利用2.0的Ping类。 --------------------