请教关于scktsrvr.exe的问题。(过江项羽)

luhongjun 2002-01-10 02:06:20
加精
1:使用TSocketConnection连接应用服务器,开始两天运行正常,但过了2,3天后就需要重新启动scktsrvr.exe文件,否则客户端会连接失败。基本是过两三天就需要启动一次。
2:scktsrvr.exe的启动怎样能在2000server/nt4.0登陆之前运行,在注册表的run下是在登陆之后运行,这样就必须登陆NT/2000非常不方便。
3:我已经给listbox增加了内容。又知道一个字符串"xxx"应怎样最方便的确定此字符串在Listbox中的位置?即ItemIndex=?
...全文
616 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Soft21 2002-01-12
  • 打赏
  • 举报
回复
我学到了不少东西
luhongjun 2002-01-11
  • 打赏
  • 举报
回复
怎么不能给分了,那位斑竹帮我给一下分好么?
sigui(全世界软硬件,统一起来!) :10
Wingsun(孙春阳):85
copy_paste(落泊的木石三):80
tiggle(中国虎) :15
swf123(沈) :10



 
luhongjun 2002-01-11
  • 打赏
  • 举报
回复
谢谢各位。
swf123 2002-01-10
  • 打赏
  • 举报
回复
scktsrvr.exe 是通过WInSOCK来支持RPC调用 ,当客户端异常退出是,他不能保证服务释放客户端
已启用的资源,当次数多时,服务器就不得不.....
tiggle 2002-01-10
  • 打赏
  • 举报
回复
可以在schedule中设置一个事务将scktsrvr.exe重启。
使用 net start XXXX,net stop XXXX
copy_paste 2002-01-10
  • 打赏
  • 举报
回复
我这段正在写它的扩展,让它能支持文件传输,是for D6的,不过在前段完成的Client send Server ,Client Get Server没问题,现在加入写的Server Send Client问题多多(死机是很经常的:( ),如果完成了,给各位看看,指点指点。

这是前段写的,没有加入上面的功能(PostThreadMessage),不过新的有,不过问题多多,谁要的话说一下,我再上传上去。

http://www.csdn.net/filebbs/read_topic.asp?id=992
copy_paste 2002-01-10
  • 打赏
  • 举报
回复
1:好像scktsrvr.exe那个东东,可能是如果Client意外断开后,server中的clientThread并没有Free完,它还一直阻塞着那个进程,一但积多,可能会出问题吧。我记得server中是启动Thread Pooling, default cache size: 10,它的工作原理就是TSimpleEvent.WaitFor,等待客户端有连接才触发ClientThread,我想不太会出问题,但是两三天的等待,这就说不清了。

而关于client的意外断开,Server不能侦听到中断,以致一直block 一个clientThread,我试过可以通过PostThreadMessage(Thread.ThreadId, WM_USER, 0, 0),发一个消息给线程,在ClientThread因为它是创建了一个消息队列,并且它的MsgWaitForMutipleObjects是可以侦听到消息,所以你可以稍微修改一下server的源码,加一些小处理就可以了。
server加一下TTimer,时间为60000ms,一分钟吧先,每分钟,server去postThreadMessage给每个ClientThread,然后在
ClientExceute中:
//在这个case中
WAIT_OBJECT_0 + 1:
begin
while PeekMessage(msg, 0, 0, 0) do
...
if 得到当前时间 - 客户端程序最后响应时间 > 某个时间(自己设) then
ClientSocket.Connected := False//就断开它。
end;

其它的相同吧。

2, 3有人回答了,:)
luhongjun 2002-01-10
  • 打赏
  • 举报
回复
Wingsun(孙春阳):好久不见了,我的OICQ不能用了,不能和你聊天,遗憾。给我发个EMAIL好么
把你的实际地址给我发过来,可以么?
wangledong(雪山之鹰):王乐东,怎么改名了,雪山之鹰挺贴切,有东北味,哈哈。听说你已经离开5678了,最近怎么样?

wangledong 2002-01-10
  • 打赏
  • 举报
回复
同意Wingsun(孙春阳),好久不见了啊,大家可好啊?
Wingsun 2002-01-10
  • 打赏
  • 举报
回复
2、你可以这样运行scktsrvr.exe -install将其作为一个服务来启动。当然9x下是不行得拉。
3、ListBox1->ItemIndex=ListBox1->Items->IndexOf("XXX")这样就可以哦!
第一个好像是TSocketConnection的通病
sigui 2002-01-10
  • 打赏
  • 举报
回复
2、把你自己的客户端程序编成service,在构造函数里启动scktsrvr.exe
jq_song 2002-01-10
  • 打赏
  • 举报
回复
强烈关注!

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧