社区
网络通信/分布式开发
帖子详情
如果客户端突然关机,服务器端怎么才能监测到该clientsocket已经掉线?
tfm
2004-03-31 07:47:09
如果遇到突然关机或者掉线的情况,服务器怎么才能监测到该clientsocket已经掉线?因为客户端比较多,如果采取服务器端隔一定的时间向每个客户端都发一条消息的话,效率会有点低,请问各位达侠有没有什么好的办法!
...全文
254
11
打赏
收藏
如果客户端突然关机,服务器端怎么才能监测到该clientsocket已经掉线?
如果遇到突然关机或者掉线的情况,服务器怎么才能监测到该clientsocket已经掉线?因为客户端比较多,如果采取服务器端隔一定的时间向每个客户端都发一条消息的话,效率会有点低,请问各位达侠有没有什么好的办法!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bales
2004-04-06
打赏
举报
回复
当客户端断开后,服务端的ClientDisconnect事件自动被激活。
Kenn
2004-04-06
打赏
举报
回复
procedure TFrmMain.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
if ErrorCode = 10053 then
begin
MessageBox(Handle, '客户端退出!', '提示', MB_OK);
ErrorCode := 0;
end;
end;
net_jun
2004-04-03
打赏
举报
回复
只服务器向客户端定期发消息,如收不到反馈,就进行clientdisconcect。
fansnaf
2004-04-03
打赏
举报
回复
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
tfm
2004-04-03
打赏
举报
回复
我说的是客户端突然掉线,客户端在机器突然断电的时候是没有什么反映的,更不会向服务器发送什么消息的.而此时服务器端onclienclose事件也监测不到该客户端是否掉线,除非向客户发送消息!
wgj1922
2004-04-01
打赏
举报
回复
serversocket的clientdisconcect事件可以对客户端断开连接做出响应。
insert2003
2004-04-01
打赏
举报
回复
最好是在客户端加一定时器(Timer)每隔一段时间就身服务器发送在线消息。
如果服务器过了这段时间后还未收到消息,就说明客户端关闭了!
我就是这么做一个程序
whitetiger8
2004-04-01
打赏
举报
回复
建议可以定时的检测一下客端。 最好由客户端定时的向服务器发出在线通过。如果服务器接不到了,说明客户掉线了
aehousmantao
2004-03-31
打赏
举报
回复
如果服务器承载能力很强的话,你可以试一下,通过放松ICMP包看看它的反馈信息!不过在局域网里是很好的方法!如果在公网里,会引起网络堵塞!
knife_s
2004-03-31
打赏
举报
回复
在客户端比较多的情况,是没有办法的,你看看目前的网络游戏就知道,客户端掉线后,并不是实时反应在服务器端的,
也只能间隔一定时间发送消息
stanely
2004-03-31
打赏
举报
回复
serversocket有个事件:onclose
通过里面的参数socket就能得到远端socket的信息,如remoteaddress
服务器端
客户端
下载解压之后,使用VC++ 6.0打开两个工程:一个是
Socket
Server和一个
Client
Socket
工程。 2、首先运行
服务器端
工程,选默认的端口1008 3、然后运行
客户端
工程,选默认的端口1008和默认的服务器地址 4、再运行多个
客户端
进程 5、如果一切正常,可以每个
客户端
的消息发送,我们可以在服务端和各个
客户端
同步看到消息 实现一个服务器对多个
客户端
的关键是,在服务端的使用集合CPtrList类
delphi
socket
(
Client
Socket
,Server
Socket
)简单实例
delphi
socket
(
Client
Socket
,Server
Socket
)简单实例
winsock实现服务机客户机通信
服务器端
设计: 1. 在
服务器端
首先建立一个用于监听
客户端
的套接字; 2. 当
客户端
连接时,建立一个和
客户端
通话的套接字,并且保持直到
客户端
中断连接; 3. 再启用监听套接字等待
客户端
的连接。 CListen
Socket
//监听
客户端
的套接字; OnReceive//接收消息; CServerDlg::AddMsg//添加接受到的信息到文本框。
客户端
设计: 1. 首先建立一个套接字,来连接服务器,然后保持这个对应的套接字到通讯结束。 m_
Client
Socket
.Create()//创建一个套接字; m_
Client
Socket
.Connect()//连接服务器; m_
Client
Socket
.Send()//发送消息。
基于tcp的聊天室
客户端
方面:首先,
客户端
方面包含两部分。一个是
Client
UI,用于布置
客户端
界面;另一个是从QTcp
Socket
继承来的子类
Client
Socket
,通过
Client
Socket
+ ServerIP + Port 连接到服务器, 成功连接后就可以通过
Client
Socket
和
服务器端
进行通信了(发送数据和接受数据)。
Client
UI 和
Client
Socket
之间通过信号与槽进行信息传递(接收:
Client
Socket
从服务器接收到数据后,通过信号与槽传递给
Client
UI,然后
Client
UI将信息显示出来;发送:点击Send按钮后,
Client
UI将数据通过信号与槽传递给
Client
Socket
,
Client
Socket
将信息传输给
服务器端
)。
服务器端
方面:
服务器端
方面稍复杂一点。一个用于布置
服务器端
界面的ServerUI;一个是从QTcpServer继承来的子类Server,Server 和ServerUI 之间传输数据与
Client
Socket
和
Client
UI 之间很类似,不再啰嗦,另外Server 还包含一个
Socket
的列表,用来记录连接到该服务器的
socket
信息。当有新信息收到后,可以通过该列表更新所有连接到该
服务器端
的
客户端
。在我看来,Server端就相当于一个信息中转站,任意一个
客户端
都可以通过Server与其他的
客户端
进行通信。 ---------------------
一个服务器对多个
客户端
的MFC
Socket
编程示例(实现简单的即时通讯功能)
环境:Windows XP SP3、 VC++ 6.0、 Windows 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0打开两个工程:一个是
Socket
Server和一个
Client
Socket
工程。 2、首先运行
服务器端
工程,选默认的端口1008 3、然后运行
客户端
工程,选默认的端口1008和默认的服务器地址 4、再运行多个
客户端
进程 5、如果一切正常,可以每个
客户端
的消息发送,我们可以在服务端和各个
客户端
同步看到消息 实现一个服务器对多个
客户端
的关键是,在服务端的使用集合CPtrList类用保存
客户端
的
socket
对象,思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存
客户端
的
socket
对象,而MFC框架提供了C
Socket
类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的即时通讯功能。另外,MFC提供了C
Socket
File类和CArchive类与C
Socket
类实现了C++的网络通讯编程功能。 本示例注释非常详细,所有的辅助类都放一个util目录中,然后在工程中分了一个目录来管理这些辅助类,使用代码非常清晰。手动书写部分的代码是按Java的规范书写,当然其它代码由IDE生成的,所以是MS的风格,所以当你看代码时,只要是使用“骆驮命名法”的方法都是本人书写的功能性代码。 参看的思路:在服务端要从回调方法onAccept读起;而
客户端
代码主要从OnSendButton方法读起,即可理解整个代码的意思。 阅读对象:具有Java的
Socket
编程经验的人员,并且希望能够书写出比Java效率更高的即时通讯程序的人员
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章