网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi开发基于DCOM的聊天室
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
);

end;

服务器端的最后一个比较重要的部分TchatRoomManager:

type

TChatRoomManager=class

private

ChatRoom:array of TChatRoom;

public

constructor Create;

function FindRoomByID(id:integer):TChatRoom;

end;

实现部分:

{ TChatRoomManager }

constructor TChatRoomManager.Create;

var

i,RoomCount:integer;

RoomNames:TStrings;//RoomName是配置文件中的聊天室名称

begin

RoomCount:=1;

//这里将从配置文件中读出有几个聊天室

RoomNames:=TStringList.Create;

RoomNames.Add(''TestRoom'');//这句将被最终的从配置文件读取替换掉

setlength(ChatRoom,RoomCount);

for i:=1 to RoomCount do

ChatRoom[i]:=TChatRoom.Create(RoomNames[i-1],i);

end;

function TChatRoomManager.FindRoomByID(id:integer): TChatRoom;

//该函数由IChatManager接口调用,由于最终版本的接口将会提供给客户

//端得到房间列表的功能,所以客户端知道自己房间的id

begin

result:=ChatRoom[id];

end;

initialization

ChatRoomManager:=TChatRoomManager.Create;

end.




  在服务器端的主要核心部分完成以后,我们配置好服务器端的DCOM配置,就可以开发一个简单的客户端进行测试了:(虽然客户端尽可能的简单,我们不用配置DCOM但我们仍需要拷贝服务器端的类型库文件.tlb到客户端并注册后才能开发和使用客户端,当然,这些都可以通过安装程序来完成)

  在客户端我们只列出两个相对重要的函数,其余的都省略,请想我来信获得全部的程序

procedure TForm1.Button1Click(Sender: TObject);

//点击button1后将edit的内容“说”出去

begin

Server.SpeakTo(edit1.Text,1);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

//每隔一段时间向服务器请求谈话内容,我设置了为1.5秒

var

TempStrings:TStrings;

i:integer;

begin

if Server.ReadReady(1)=1 then

begin

TempStrings:=TStringList.Create;

SetOleStrings(TempStrings,Server.ReadFrom(1));

if FReadStartPos>19 then

if (FClearBufferTag=0-Server.TestClearBufferTag(1)) then

begin

FReadStartPos:=0;

FClearBufferTag:=Server.TestClearBufferTag(1);

end;

for i:=FReadStartPos to TempStrings.Count-1 do

Memo1.Lines.Add(TempStrings[i]);

FReadStartPos:=TempStrings.Count;

end;

end;


  一个基于DCOM的局域网聊天室的核心部分就基本完成了,并且所有的测试都比较顺利,这里需要补充说明一下聊天室服务器的一个难点:就是需要开发者非常谨慎的处理同步,虽然我也进行了一定的同步处理,但在客户端人数众多的情况下仍然可能发生死锁或其它活锁的情况,这个程序还需要更进一步的测试、甚至进行一定的重构。

  • 上一篇资讯: 隐藏我的电脑中驱动器
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号