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


  • VS 2010 Productivity Power Tools Update (with some cool new features)

    7/21/2010 11:58:00 AM

    Last month I blogged about the VS 2010 Productivity Power Tools Extensions – a free set of Visu

  • [小把戏] 之IBatis.Net系统分页问题的解决

    5/28/2012 3:57:00 PM

    本文想解决园子里大家都关心的Ibatis.Net分页的实现问题。其实我也找了Ibatis.Net分页的解决方案,园子里有一些,奈何没有发现我想要的方式,大都的策略是调用两次SQL Statement

  • Silverlight UI Creation

    8/18/2009 2:07:00 AM

    We’ve been looking to get a short-term Silverlight UI person (with of course a little experience in

  • 程序员的信仰

    6/13/2009 3:16:00 PM

    老婆经常夸我有想法,得益于老婆大人的鼓励,我才打算将自己平时所想,所总结的东西写下来。人是需要不断总结的,有总结才会有进步。所谓总结,并不一定是多么高深的道理,多么复杂的推论,也并不一定要长篇大论。

  • CSS去除免费虚拟主机的广告心得分享

    8/20/2009 12:12:00 AM

    摘要: 相信大多数web developer都有使用免费虚拟主机的经历吧?呵呵,无论是用来做实验、新手练手,还是一些莫名其妙的用途,你总有舍不得花钱买收费虚拟主机的时候。免费空间的作用非常大。

  • YetAnotherForum.Net+ScrewTurn Wiki中文完美汉化增强版(07-13更新:集成ScrewTurn Wiki - 包括用户帐号整合)(GPL协议源码发布)

    7/13/2007 7:15:00 PM

    摘要: 本程序是Teddy为更方便的收集整理各种育儿知识,准备架一个育儿论坛+Wiki网站5JBB.COM,而对YetAnotherForum.Net最新的version 1.9.1 RC1 (NE

  • MOSS 工作流开发入门学习!

    6/28/2007 7:05:00 PM

    摘要: 找到好的资料,必须Share出来,这个是我做人的宗旨!希望大家能够受益。&n... 阅读全文 AA(Show) 2007-06-28 18:01 发表评论

  • PDA访问WCF

    11/1/2009 4:09:00 PM

    阅读: 168 评论: 2 作者: 阿修罗一平 发表于 2009-11-01 13:44 原文链接 最近在做一个系统,客户端有两种类型,有PC和PDA。为了能支持不同的平台,并且

  • LINQ vs FOREACH vs FOR Loop Performance

    3/25/2009 1:09:00 AM

    I made a blatantly stupid logic mistake the other day in a business logic layer method that I was w

  • ASP.NET 未被授权访问所请求的资源

    3/11/2011 11:19:00 AM

    您好,我在用vs调试程序的时候出现以下错误,程序代码的作用是读取testimg文件夹下的文件 对路径“I:\Web\testimg”的访问被拒绝