社区
网络编程
帖子详情
请教socket客户端怎么知道服务器端重启完成的?
nzc123
2009-12-03 08:07:50
我用SOCKET实现了手机和PC的通信。
手机是服务器端,但在运行过程中,手机端SOCKET服务需要重启,PC端客户端想在手机服务端重启完成之后,也重启本身(这样才能继续通信)。想问一下PC端怎么知道SOCKET服务器端已经重启完毕的?打算手机端服务重启之后发送消息到PC端,PC端重启SOCKET。但不知道怎么发送,或者怎么样才能让PC端知道服务器重启完成的? 谢谢。
...全文
490
12
打赏
收藏
请教socket客户端怎么知道服务器端重启完成的?
我用SOCKET实现了手机和PC的通信。 手机是服务器端,但在运行过程中,手机端SOCKET服务需要重启,PC端客户端想在手机服务端重启完成之后,也重启本身(这样才能继续通信)。想问一下PC端怎么知道SOCKET服务器端已经重启完毕的?打算手机端服务重启之后发送消息到PC端,PC端重启SOCKET。但不知道怎么发送,或者怎么样才能让PC端知道服务器重启完成的? 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
red-fly
2009-12-05
打赏
举报
回复
在这种应用之下,只能这样来做。
你看QQ,你把网线拔掉,它就会不断地重连,因为它不知道什么时候服务器可以连上。
当然,如果是一个大的平台,如果还有另外的服务器,那可以和你的服务器配合来完成你想要的功能,但在你现在的情况下,显然是不切实际的,也没有必要
jourbin
2009-12-05
打赏
举报
回复
重新尝试连接服务器可以放在另外一个线程里,连接操作可以设置超时
还有什么更好的办法?那就只能改你的设计了
你的设计就很怪,需要重新启动,晕,这样的服务怎么投入商用?
人家最坏的情况还要做个冗于设计,一个服务器down了,另外一个还在提供服务
yinshisike
2009-12-05
打赏
举报
回复
我也想知道.
joey_
2009-12-05
打赏
举报
回复
绕人的问题
red-fly
2009-12-04
打赏
举报
回复
1. 楼主的思想不对。不是要重启才能继续通信。要是这样,那就是程序有问题
2. PC端无法知道服务器是否已经启动完成,除非另有约定。PC端发现无法和服务器通信之后,开始复位所有的状态,然后进入到一个不断重试连接的过程,直到重新连接成功或者是达到指定的重连次数后停止
3. 重启约定。此约定是在保证硬件连接完好的前提下进行的。当服务器端开始重启时,首先向客户端发送重启需要的时间,然后客户端复位所有的状态,在等待指定的时间后开始重连,或者是直接约定比如15秒钟等等,这个约定的时间,应该是经过测试后服务器重启所需要的时间,而不是随便指定一个时间的。
nzc123
2009-12-04
打赏
举报
回复
不懂,
不过,既然服务端都重启了,那么socket链接也就断了,客户端如何能获得服务端的数据呢。
为什么不考虑pc端断开重连,而非重启软件。
------------
你好,我就是用PC端断开SOCKET重联的。但需要知道服务器端什么时候重启成功,因为不断的重联的话,消耗太大了。
------------------------------
确切的说,无法精确地知道;
不过有个方法,你在手机重启时告诉PC,然后PC在一定的时间(时间足以让手机重启,就算没有重启完成,pc可以不停尝试重连直至连接成功)后重连。
--------------------------------
你好,这种办法我也想到,不过不知道服务器端重启时间的话,PC端会浪费很多时间等待。
断开连接的时候会有抛出异常的吧,截获这个异常就可以了,然后不断地去重连服务器,直到成功为止。
或者在连接的过程中,定时发送活跃信息(一个没有内容的数据包即可)。用另外的线程判定多久没有收到活跃信息,当在一定时间内收不到数据包的时候,判定掉线,然后关掉socket,然后不断重新连接,直到成功。
------------------------------------
你好,不断的重联服务器,消耗的资源太多啊。 你说的第2种办法只能检测到断开,不能检测到服务器重启成功。
不够具体理解lz意思
1,通信服务与业务逻辑服务分开,业务服务重启的时候,继续保持通信
2,如果是通信服务重启,在重启前通知PC端,然后PC端定时尝试连接服务器
TCP ? UDP ?能直连?
--------------------
TCP连接,不过PC端不断去重连服务器的话,消耗比较大。就跟我现在用的办法一样了。
nzc123
2009-12-04
打赏
举报
回复
[Quote=引用 6 楼 jszj 的回复:]
1. 楼主的思想不对。不是要重启才能继续通信。要是这样,那就是程序有问题
2. PC端无法知道服务器是否已经启动完成,除非另有约定。PC端发现无法和服务器通信之后,开始复位所有的状态,然后进入到一个不断重试连接的过程,直到重新连接成功或者是达到指定的重连次数后停止
3. 重启约定。此约定是在保证硬件连接完好的前提下进行的。当服务器端开始重启时,首先向客户端发送重启需要的时间,然后客户端复位所有的状态,在等待指定的时间后开始重连,或者是直接约定比如15秒钟等等,这个约定的时间,应该是经过测试后服务器重启所需要的时间,而不是随便指定一个时间的。
[/Quote]
谢谢楼上的回复,我说的重启就是重连的意思。因为我的服务器需要执行一个操作之后才重启,这个操作的时间我无法预知。所以才想让服务器重启之后,通过另外一个渠道发消息给PC端,让PC端重连。如果不发的话,PC端会不断重连,直到超时或者连接成功,我现在是这么做的。但是觉得如果有另外一个渠道让服务器重启之后马上通知PC端的话,我就不用这么麻烦。
jourbin
2009-12-03
打赏
举报
回复
不够具体理解lz意思
1,通信服务与业务逻辑服务分开,业务服务重启的时候,继续保持通信
2,如果是通信服务重启,在重启前通知PC端,然后PC端定时尝试连接服务器
TCP ? UDP ?能直连?
nintendo_dskay
2009-12-03
打赏
举报
回复
断开连接的时候会有抛出异常的吧,截获这个异常就可以了,然后不断地去重连服务器,直到成功为止。
或者在连接的过程中,定时发送活跃信息(一个没有内容的数据包即可)。用另外的线程判定多久没有收到活跃信息,当在一定时间内收不到数据包的时候,判定掉线,然后关掉socket,然后不断重新连接,直到成功。
jenf
2009-12-03
打赏
举报
回复
确切的说,无法精确地知道;
不过有个方法,你在手机重启时告诉PC,然后PC在一定的时间(时间足以让手机重启,就算没有重启完成,pc可以不停尝试重连直至连接成功)后重连。
悟迟
2009-12-03
打赏
举报
回复
不懂,
不过,既然服务端都重启了,那么socket链接也就断了,客户端如何能获得服务端的数据呢。
为什么不考虑pc端断开重连,而非重启软件。
【计算机网络】服务端和
客户端
最大支持多少tcp连接?如何分析?
3.一个
客户端
连接一个服务端最大支持多少个tcp连接?(二)全面分析1.TCP连接的创建2.端口号的限制3.文件描述符的限制4.线程数量的限制5.内存的限制6.CPU的限制7.总结8.后记 (一)引用文章 Linux 中每个 TCP 连接最少...
关于
服务器端
通讯程序设计
本文阐述了一个类,他可以被同时用于
客户端
和
服务器端
代码。 这个类使用IOCP(Input Output Completion Ports) 以及异步(non-blocking) 功能调用。 源代码是基于很多其他源代码和文章的。 使用此源代码,你可以: ...
数据库介绍(MySQL安装 体系结构、基本管理)
)向DBA高手
请教
,或者在及技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品 10 )若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何任务数据服务的后端数据库软件 1.4 ...
XMPP推送
前言: 最近公司需要android的消息推送,在网上找了很多消息推送的例子,都是无法运行. ...http://127.0.0.1:7070即可,如果在eclipse中运行了
客户端
即可在
服务器端
看到.这个很简单,不是本文的重点.现在主要的就
dpdk Vhost 库
当 DPDK vhost-user 作为
客户端
时,它将不断尝试连接到服务端(QEMU),
知道
成功。当 QEMU 还没启动时当 QEMU
重启
时(如guset OS
重启
)这个重新连接选项是默认启用的,但是,可以通过设置这个标志来关闭它。设置此...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章