http://www.codeproject.com/KB/IP/PrismServer.aspx
http://www.codeproject.com/KB/IP/MyDownloader.aspx
PrismServer:基于。NET 2.0的聊天客户端与服务器端解决方案
PrismServer是一个添加聊天和其他通用目的多用户消息到你的。NET应用程序的完整的解决方案,其理念是作为一个聊天应用程序,比如创建和进入聊天室,发送和接收聊天信息,并且管理用户配置,PrismServer提供了简单的属性、方法和事件来简化开发这类应用程序的复杂性,代码部分由如下几个项目所组成:
ACG.Prism:一个。NET类库程序集,包含封装了PrismServer的类和组件,重要的组件和类分别是:
.PrismConnection组件:允许一个客户端应用程序连接和与PrismServer通信。提供了属性来指定主机地址和服务器端的端口号,方法来初始化通信,事件来响应各种不同的行为,比如聊天信息到达,新应户进入聊天室,或者是来自管理员的信息。
.PrismServer组件:封装实际的服务器端的prismServer,允许多个进入的客户端通过Sockets来连接和通信。这个组件是任何服务器PrismServer的基础。并且提供了属性和事件以便于服务器的用户界面能够保存日期。
.PrismUser类:表示一个当前登录到聊天服务器的单 个用户。这个类将在客户端和服务器端被使用
.PrismRoom类:代表一个聊天房间,聊天房间可以包含一个或多个PrismUsers,用于在它们之间进行通信。
.PrismServerAdmin应用程序:一个Windows Forms应用程序,是一个完整的聊天服务器端应用程序。该程序提供了一个用户界面,因此服务器操作员能够看见谁己经连接,监视活动和性能历史
.ChatNDraw应用程序:一个样例的客户端应用程序,用户能连接到一个聊天服务器,创建和输入聊天房间,与其他用户聊天,并且使用一个共享的绘图板。
PrismServer是一个多用户擎,基于Windows策略游戏,由SCG创建,SCG权利在1990年中期开始制造Windows游戏,有几个资历允许多个玩家来调整,创建游戏,并且实时的在Internet上玩游戏。
写一个客户端应用程序
为了允许一个客户端应用程序经由PrismServer进行连接和通信,使用PrismConnection组件,在一个WinForms应用程序中,可以简单的拖放组件在应用程序的Form上,然后在设计时设置其属性,PrismConnection公开了三个属性必须在连接期间进行设置:
1,Host:指定聊天室服务器的域名或IP地址
2,Port:指定聊天端口号,PrismServer被配置为使用的服务器机器。
3,SubjectName:Subject Name的概念提供了多个客户端应用程序使用一个PrismServer的能力,仅接收源于同一个客户端的消息,PrismServer将路由消息仅到共享相同Subject Name的客户端。你应该提供一个字符串值响应你的应用程序名称。
连接
一旦上面的属性被设置,设置Active属性为true尝试建立一个连接,这个行为将阻塞应用程序直到连接建立,或者一个异常被触发。
登录
一旦一个连接被建立,下一步是使用用户名/密码登录进PrismServer,PrismConnection组件提供了两个方法能被用于登录进服务器:Login和LoginNew,这允许用户使用一个己注册的用户名和密码来登录进,或者是一个全新的用户。客户端用户界面也应该分别提供路径以便于用户能输入进行登录。
调用Login方法使用之前注册的用户名和密码进行登录时,这个调用并不阻塞。PrismConnection将触发LoginOK事件或者是LoginError事件。可能的错误是无效的密码,用户名在服务器端注册表中没有找到。
调用LoginNew来使用一个新的用户名来登录服务器,该方法接受一个PrismUser对象的实例,该类实例包含了新用户的信息,组件库名含一个PrismUserInfoDialog对话框组件能够被用于快速创建一个PrismUser实例,可以查看ChatNDraw演示客户应用程序来查看该组件的实际应用。这个调用是非阻塞的。且PrismConnection将由触发LoginOK或LoginError呈现。可能的错误包括用户名己经存在,或指定了无效的用户名。
在客户端,你总是接受到一个本地的PrismUser实例,用于连接到ThisUser属性的引用。
PrismRooms
聊天房间
每个连接到PrismServer的客户端将占用一个PrismRoom的房间,只能与相同房间的客户进行聊天。你的客户端应用程序将看到所有的PrismRooms己经被创建,经由其Subject Name来共享。
PrismConnection组件使用RoomAdded事件通知客户端新的PrismRoom被创建,你应该期望一旦成功登录后就接收一系列这些事件,PrismRoom中的每个个当前存在服务器端的,客户端都应该呈现这些房间在用户界面。使用一个ListBox、ListView或者是同样的控件。当一个PrismRoom被移除,PrismConnection使用RoomRemoved事件通知客户端被移除。
PrismConnection还使用UserAddedToRoom和UserLeftRoom事件,当用户进入和离开PrismRooms时进行通知。
在成功登录之后,客户端将进行默认的房间,或者是lobby,大厅。PrismConection通知客户端它己经进入了一个新的房间,经由JoinedRoom事件,注意JoinedRoom被触发,除了除随的UserAddedToRoom事件,UserAddedToRoom包含PrismUser对象来表示实际己经连接到本地应用程序的客户端。与ThisUser属性实例相同。
为了加入一个不同的PrismRoom,调用EnterRoom方法,为了创建一个新的PrismRoom,调用CreateRoom方法,这些调用是非阻塞的,但是不会将用户立即放入一个新的房间。在调用了其中一个方法后,你应该期望接收几个事件,UserLeftRoom指定你离开了当前你的房间。UserAddedtoRoom指示你己经进入了一个新的房间。最终JoinedRoom。如果是最后一个用户离开房间,PrismServer将销毁房间,(除了默认的Lobby)和PrismConnection将触发RoomRemoved事件,如果你创建一个新的房间,你将接收到RoomAdded事件在UserAddedToRoom和JoinedRoom之前。
PrismRooms for Multi-Player Games
CreateRoom方法有两个参数,渴望的房间名称和最大的参与者数量,指定0表示没有最大数,如果你传递了一个值大于0,PrismConnection将触发一个StartSignal事件,当指定数目的参与者进入房间时,服务器将锁定Room以便 没有其他的客户端可以进入。This feature is designed to allow multi-player games to kick off once the specified number of players have entered the game room.
Chat and Data Messages
聊天和数据消息
当你在一个PrismRoom时,你可以与聊天室中的其它客户端交换数据信息和聊天,为了发送字符串的聊天文本,调用SendChart方法,当其它客户端发送的一个聊天文本字符串被接收到时(注意,不包括本地客户端),PrismConnection触发提供应用程序传递应用程序特定的,非聊天的数据到聊天室的客户端,设用SendData来发送数据消息,通过处理DataMessageReceived事件来处理接收到的数据消息。
ChatNDraw Client
包含完整的示例客户端应用程序的代码,样例客户端允许用户连到一个PrismServer,创建和加入聊天室,与其他用户聊天,绘制共享黑板,一些有兴趣的点是:
ChatNDraw使用数据消息来共享在画布上绘制的笔触,包括清除默白,改变颜色和画笔。
ChatNDraw当用户在ListView中双击鼠标时,允许用户查看和修改用户信息。PrismUser能够使用PrismUserInfoDialog对话框组件被显示出来,双击事件代码比较PrismUser和被单击的ThisUser,如果相等,赋对话框为可编辑的状态,如果对话框中的信息被修改,将调用PrismConnection的SaveUserInfo方法来保存修改,服务器最终响应并且PrismConnection触发一个UserInfoChanged事件让你(或聊天室中的其它客户端)知道用户信息己经被改变。
ChatNDraw允许用户查看当前的PrismServer统计,通过调用ServerStats方法,经由ServerStatsReceived事件以PrismServerStats对象的形式传递回。
Writing a Server Application
PrismServer组件是PrismServer服务器应用程序的基础,它封装了多线程的服务器端Socket,管理聊天室名称,PrismRooms和PrismUsers,并处理连接客户端的消息传递。PrismServer组件提供了很多的属性来控制服务器端的行为:
Port:指定服务器将侦听连接的端口号。
LobbyName:新的客户端将被添加到的默认的聊天室名称(PrismRoom)。
ProhibitSameIP:如果为true,阻止来自相同IP地址的多个连接。
ProhibitSameUsername:如果为True,阻止来自相同用户名称的多次登录。
PingInterval:控制多久服务器端ping客户端一次(秒计),客户端不响应ping将被认为是超时或断开连接。
Implementation:必须设置为派生自抽象基类PrismServerImplementation类的实例。
PrismServer组件也提供了一些方法来允许操作员在连接的客户端和服务器端进行交互。也具有一系列的事件。服务器应用程序应该响应这些事件,更新他们的用户界面以响应信息的修改(新的客户端连接,房间的添加和移除等等)。PrismServerAdmin应用程序实现了这些行为。
User Management in PrismServer
PrismServer端的用户管理。
PrismServer组件提供了一个Implementation属性必须被赋一个派生自PrismServerImplementation的派生类,PrismServerImplementation提供了一个接口来用于用户管理,你能派生自新的组件来允许服务器使用一个本地文件,数据库或其它存储机制来管理用户,存储机制将保存用户注册信息,这不同于windows注册表,PrismServerFileImplementation组件存储用户信息到本地文件系统的二进制文件中。
PrismServerImplementation组件包含如下的几个方法应该被重载以提供用户管理功能的实现。
bool UserExists(string userName) - 返回在当前的用户注册中是否存在指定的用户。
bool IsPasswordValid(string userName, string password) - 用户名和密码是否有效?
void PopulateUserInfo(PrismUser user) - 当登录成功后,该方法将加载其他的用户信息。
bool CheckUserName(string userName, ref string msg) - 返回指定的用户是名称是否有效。.
bool CheckPassword(string password, ref string msg) - 返回指定的密码是否有效
void StoreUserInfo(PrismUser user) -
没有合适的资源?快使用搜索试试~ 我知道了~
企业级聊天工具包括服务端和客户端
共278个文件
cs:92个
bmp:40个
resx:22个
5星 · 超过95%的资源 需积分: 9 8 下载量 26 浏览量
2013-04-15
09:43:27
上传
评论 2
收藏 1.21MB RAR 举报
温馨提示
企业级聊天工具包括服务端和客户端,服务端和客户端都很完善,完全开源,保证可以用
资源推荐
资源详情
资源评论
收起资源包目录
企业级聊天工具包括服务端和客户端 (278个子文件)
People.bmp 3KB
ChatNDraw.bmp 3KB
Stats.bmp 3KB
Erase.bmp 3KB
ChatNDraw.bmp 3KB
Stats.bmp 3KB
People.bmp 3KB
Erase.bmp 3KB
Admin.bmp 3KB
Admin.bmp 3KB
Palette.bmp 2KB
ChatRoom.bmp 2KB
Palette.bmp 2KB
ChatRoom.bmp 2KB
Settings.bmp 2KB
Settings.bmp 2KB
PrismServer.bmp 1KB
PrismServer.bmp 1KB
Server.bmp 1KB
Door.bmp 1KB
Sphere.bmp 1KB
SphereGreen.bmp 1KB
Sphere.bmp 1KB
Door.bmp 1KB
SphereGreen.bmp 1KB
Server.bmp 1KB
PrismServerFileImplementation.bmp 822B
PrismServerImplementation.bmp 822B
PrismUserInfoDialog.bmp 822B
PrismServerStatsDialog.bmp 822B
PrismConnection.bmp 822B
GameCoordinator.bmp 822B
PrismServerImplementation.bmp 822B
PrismUserInfoDialog.bmp 822B
PrismServerFileImplementation.bmp 822B
PrismConnection.bmp 822B
PrismServerStatsDialog.bmp 822B
GameCoordinator.bmp 822B
GameCoordinator.bmp 822B
GameCoordinator.bmp 822B
ResolveAssemblyReference.cache 13KB
ResolveAssemblyReference.cache 10KB
ResolveAssemblyReference.cache 4KB
ResolveAssemblyReference.cache 4KB
SCG.Prism.csproj.GenerateResource.Cache 1KB
SCG.Prism.csproj.GenerateResource.Cache 1KB
PrismServerAdmin.csproj.GenerateResource.Cache 987B
PrismServerAdmin.csproj.GenerateResource.Cache 987B
ChatNDraw.csproj.GenerateResource.Cache 984B
ChatNDraw.csproj.GenerateResource.Cache 984B
ClassDiagram1.cd 4KB
ClassDiagram1.cd 4KB
PrismServer.cs 31KB
PrismServer.cs 31KB
PrismServerForm.Designer.cs 27KB
PrismServerForm.Designer.cs 27KB
UserInfoForm.designer.cs 24KB
UserInfoForm.designer.cs 24KB
PrismConnection.cs 21KB
PrismConnection.cs 21KB
ChatNDrawForm.Designer.cs 20KB
ChatNDrawForm.Designer.cs 20KB
ChatNDrawForm.cs 19KB
ChatNDrawForm.cs 19KB
PrismServerForm.cs 19KB
PrismServerForm.cs 19KB
ServerStatsForm.Designer.cs 17KB
ServerStatsForm.Designer.cs 17KB
GameCoordinator.cs 11KB
GameCoordinator.cs 11KB
LoginForm.Designer.cs 10KB
LoginForm.Designer.cs 10KB
PrismGuest.cs 9KB
PrismGuest.cs 9KB
PrismUser.cs 8KB
PrismUser.cs 8KB
PrismNetworkStream.cs 8KB
PrismNetworkStream.cs 8KB
UserInfoForm.cs 6KB
UserInfoForm.cs 6KB
PrismServerFileImplementation.cs 6KB
PrismServerFileImplementation.cs 6KB
SettingsForm.Designer.cs 6KB
SettingsForm.Designer.cs 6KB
PrismRoom.cs 5KB
PrismRoom.cs 5KB
Tokenizer.cs 5KB
Tokenizer.cs 5KB
PrismServerImplementation.cs 5KB
PrismServerImplementation.cs 5KB
SelectRoomForm.Designer.cs 4KB
SelectRoomForm.Designer.cs 4KB
AdminMsgForm.Designer.cs 4KB
AdminMsgForm.Designer.cs 4KB
Resources.Designer.cs 4KB
Resources.Designer.cs 4KB
PrismServerStats.cs 4KB
PrismServerStats.cs 4KB
ServerStatsForm.cs 3KB
ServerStatsForm.cs 3KB
共 278 条
- 1
- 2
- 3
资源评论
- Nokecy2014-06-22没有参考作用
- levelwithme2015-10-09还行,可以借鉴一下
zhaizj2012
- 粉丝: 3
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功