老问题了!不过还找不到答案!局域网编程? 用delphi来实现netstat -an功能调用winexec()我在前面贴过这样的帖子你去看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 局域网内,一个HUB连60台客户机,3台服务器。我想编个程序在服务器上监控各台客户机的情况,比如Client1是否开机等。而且在客户机上我也想知道哪一台服务器到底开机没有 , 在Client1 又想知道 Client2是否也开机? 写一个“客户-服务器”发送消息。可以借鉴WIN2000里的网络连接。 在 server ping client在 client ping server 这确实是一个问题,我以前也碰到过,当时也没有解决。前面各位提出的、通过在Delphi中调用 ping 或 netstat -an 方法,虽然可以试一试,但做起来问题还会很多,例如1。怎样从返回的一系列文本中确定出需要的信息?用命令ping 或 netstat -an 所返回的文本信息,本来是提供给人看的,现在则要被您的程序所知道,这就要麻烦多了。2。怎样在原有的GUI界面中,插入由命令行命令所返回的文本行信息?并在其中提取您要的信息后,再消了它?我想,即使上面的都可能做到,程序的界面会被弄的很乱,时间也会被拖得很长。所以,我认为较好的办法,应是直接利用WinSocket的某些属性和方法来实现。我现在大体已想出的一个办法,就是:测试连接的时间,若连接超时,就可确定对方没有开机。但此想法至今没有实际试验过,另外也存在一些问题,所以仅供参考。在局域网上,当服务器没有开机时,则任何一个客户端与它连接时,都会化很长时间(我以前测到的是45秒,这一参数可能有办法设置),然后出现一个出错信息。而当服务器打开时,则客户端与它连接时都会化很快成功(我以前测到的都在1秒以内)。利用这一事实,我们可以在连接之前,启动一个timer,并定时为1秒(也可更长点),然后开始连接。若连接成功(ServerSocket的connected事件发生),就将timer关掉(disable),这样定时器的onTimer事件就不再会出现;如到1秒后还未连接成功,则定时器onTimer事件出现,就可以判定Server未开机,就不必再空等几十秒的时间了,同时在onTimer事件的处理程序中,关掉timer自己。剩下的最后一个问题是:如何撤消已发出的连接(请求)?是否存在撤消连接请求的方法?如果不能撤消已发出的连接请求,是否有办法避免几十秒后出现的连接出错信息的显示?我看到一本书讲到‘取消连接’的说法,但它没有提供实现的手段。我现在怀疑,发出的连接请求能撤消吗?我估计是不可能的!WinSockt提供的方法中,似乎只有disconnect有些像,但它实际上并不是撤消已经发出而没有完成的连接请求,而是用来断开已成功的连接。所以,我想,唯一的办法是如何使连接出错信息不显示出来,但这一点我还没有找到答案。如果有某一Windows语句能做到,则将它加入OnError事件的处理过程中就可以了。 这个问题的解决方法很简单,将HUB换成可网管的交换机就可以了 zhang21cnboy(沧桑男人) :我们想知道的,是对方是否已打开机器。这是在通信之前做的握手工作,还谈不到真正的通信呢! 关注呀!zhang21cnboy(沧桑男人)如你所说的,很容易,但大概使用者没你那么有耐心! 工程可以编译通过,但是点击代码类型不能跳转 鼠标右击点关闭时出错? 调用Oracle存储过程返回参数的问题 有关BCD码的问题 问个菜鸟问题,idTCPServer如何得到连接的客户端的IP地址? 跪求easyscan语句 delphi输入焦点问 回答必有高分!帮兄弟一下! 远程调用 如何将一个JPG文件做成一个资源文件,并能够有应用实例. 超级价值代码光盘出售 怎样删除*.DBF文件最前面的三个字符!
在 client ping server
我们想知道的,是对方是否已打开机器。这是在通信之前做的握手工作,还谈不到真正的通信呢!
zhang21cnboy(沧桑男人)如你所说的,很容易,但大概使用者没你那么有耐心!