关于用socket作连接的c/s结构问题(100分)

  • 主题发起人 主题发起人 peterwangjunyi
  • 开始时间 开始时间
P

peterwangjunyi

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的系统是c/s结构的,两端的通讯用socket实现,其中一端可以控制另一端,
现在的问题是:受控端如果重新启动机器或关闭机器(在未结束受控端程序的前提下),
监控端怎样取得这一事件的消息,即监控端应得到一个受控端断开的消息,谢谢!
 
你用了那个TTCPSERVER,TTCPCLIENT控件吧,
正常与非正常退出都可以在ondisconnect中处理。
 
网络编程我还不太熟悉,只能给你点思路,[:)]
1。在受控端重新启动机器或关闭机器之前广播一个消息。
2。在控制端定时进行连接检测。
 
我用的是cientsocket和serversocket,当我关闭或重起受控端的时候,
监控端的serversocket没有任何反映
 
在监控端的OnxxxxDisconnect事情处理就可以了.
 
哦,应该是一应一答式的吧,受控端在Close的时候发送一个断开连接请求,
监控端收到该请求就进行处理
 
可以在监控端的serversocket.onClientDisconnection事件中加入判断的代码.
只要受控端一关闭通讯服务端即做出反应.
 
我知道,但是我强行关闭机器后,他好像并没发送关闭信息给监控端,
我在formclose里写clientsocket.acktive:=false,但还是不起作用
 
估计你要声明消息处理函数,拦WM_QUERYCLOSE系统消息,这时发信息给SERVER进行处理
 
我有一个c/s的小程序,是用tserversocket和tclientsocket连接的.
我刚试过,当c端关闭后s端可以判断出c端已关闭(但关机或重启我没试);
监控端的serversocket.onClientDisconnection事件中加入判断的代码是可以的不知
你是怎么写的判断代码?
 
上面的问题还没解决,又有了新问题,如果网线被拔掉,那监控端怎莫判断
 
这事得问张无忌,他一定知道:)
 
我觉得除非另写一个程序去监视这些事是不行的,呵呵 ,
 
用IdTcpClient與IdTcpServer試試看.應該可以.
 
网络开发不熟悉

网线拔了:肯定是ping 不通的,你也不可能知道是不是开机状态

能ping 通,你的受控端没有响应,自然就是受控端没有启动

所以,定期ping 一下,如果没装个人防火墙的话
 
应该是timeout后会发生disconnect事件.
 
还有就是代理/网关/路由可能会保持连接一定时间
 
定时发送测试包就可以解决你的问题。。。
 
后退
顶部