com服务的效率和连接用户数量(100分)

  • 主题发起人 主题发起人 chenft
  • 开始时间 开始时间
C

chenft

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建了一个com服务器,客户端通过socket连接到服务器上。
现在的实现是每次用户需要调用com服务的时候都建立连接,然后调用服务。
服务结束后,断开连接。
现在考虑采用用户建立连接后,不主动断开;
请问这两种方式,那一种效率会高一些。对服务器来说,如果一直连接着,
消耗的资源是否比较大。
其次,还想通过com服务来检测当前使用com服务的用户有多少。
如果用户在调用完服务后就断开,com服务是不是就不能检测到当前用户数量?
如果用户一直保持连接,应该可以检测到的。
怎么检测?
请大侠指点一二........
最好有一个简单例子
谢了
 
pooling share!
 
我认为先调用com服务器,后建立连接连接比较好即将socket程序先用com封装,通过dcom
先与服务器建立连接再通过socket通讯.
当所有连接都断开后再,com服务器将自动在服务端结束.这样一来比较有效率;
另外我不建议用com服务器来检测用户的多少用socket.onclientconnect事件来记录连接的
用户数.
说了这么多, 鼓励一下吧!
 
o_u_l_i,你好。
我的应用是想在客户端连接com服务器的时候,检测com服务器用户数量是否超过
预定数量,如果超过就拒绝执行客户端的功能。
因为com服务器的连接可能要越过防火墙,所以采用了socket连接的方式。
如果要在com服务器上检测用户连接数量,怎么实现?
现在socket连接是用的delphi的socksrv。如果要socket.onclientconnect
是不是要在sockesrv上做工作?
分数没有问题,现在对问题要求比较紧,兄台多多帮忙!
 
如果要在com服务器上检测用户连接数量,可以在tserversocket.onconnection事件中写入如下代码:
if serversocket.socket.activeconnections>最多用户数 then
socket.close;//注意:此处的socket为onconnection事件中的socket参数;
我刚试过了,应该可以.
 
不是很明白,可以把你的测试代码发给我看看吗?
我的邮箱cft@netease.com
 
我在com服务中没有用到sockt,采用的是sockeSrv来监听211端口。
com通过sockSrv代理请求的连接。
 
sockeSrv是什么? 属于什么类组件的全名是?难道不是delphi|internet标签页
中的TServerSocket和Tclientsocket?
一会儿发给你试试.
 
sockeSrv 是E:/Program Files/Borland/Delphi6/Bin
目录下的一个应用程序
E:/Program Files/Borland/Delphi6/Source/Vcl下面有源代码。
是一个socket连接的监听服务器
我现在采用的sockSRV.exe来监听socket连接,然后调用com服务。
com服务中,通过下面代码设置,这样应用服务可以通过socket连接来访问。
class procedure TDBComServer.UpdateRegistry(Register: Boolean;
const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;

没有用到多少socket的东东,只是把socket作为一个数据传输的通道。
 
接受答案了.
 
后退
顶部