tcpclient客户端如何知道服务端断了?

ad_jsjwhut 2011-11-30 09:29:27
服务端一直tcplistener,有客户端通过tcpclient连接就保持连接,如果在连接的过程中客户端断了,因为服务端一直在listen,所以只要客户端在上线,一下子就能连接,但是如果服务端断了,客户端不是一直connect,没办法知道服务端重新listen了,请问客户端如何判断服务端断开了,C# scoket编程,这个一直没解决
...全文
368 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天凤凰601 2011-11-30
  • 打赏
  • 举报
回复
有个东西叫:心跳包
就是定时向服务器端发送指定数据,如果发送成功,则服务器未端;失败,则重新连接,如果连接不了,说明服务器关闭。
ad_jsjwhut 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xingchen1008 的回复:]

你可以在客户端加上个小程序就是每隔多少秒去连接下服务端,然后判断服务端那边,如果在规定时间内,没有收到客户端的消息的话就是说明客户端已经断开
[/Quote]
有什么思路么,最好不要加timer控件,我考虑用receivetimeout,设定个时间,如果没有收到服务端定时发送的检查在线消息,就判定服务端断开,不知道这个思路怎么样,如果编程呢
bdmh 2011-11-30
  • 打赏
  • 举报
回复
加心跳
TNight 2011-11-30
  • 打赏
  • 举报
回复
你可以在客户端加上个小程序就是每隔多少秒去连接下服务端,然后判断服务端那边,如果在规定时间内,没有收到客户端的消息的话就是说明客户端已经断开
ad_jsjwhut 2011-11-30
  • 打赏
  • 举报
回复
google里面都是服务端如何判断客户端断开了,没有反过来的,请问该如何解决这个问题
wangyue4 2011-11-30
  • 打赏
  • 举报
回复
客户端tcp的话用tcpclient的socket对象调用receive函数,这个函数是阻塞接受。不管是客户端断开还是服务端断开连接,这个函数就会返回0,返回0就代表连接断开。
不用刻意使用心跳包去加大通讯量的。
qldsrx 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ad_jsjwhut 的回复:]
google里面都是服务端如何判断客户端断开了,没有反过来的,请问该如何解决这个问题
[/Quote]
反过来一样的,TCP连接是对等连接,服务器和客户端的身份完全可以反过来。

我个人认为没必要刻意验证,只要检测在发送数据时,判断下发送是否成功即可,或者接收数据时,是否接收到数据(如果连接断开会立刻返回)。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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