TCP IP 断开之后的重连

程序猿的小哥哥 2018-06-12 05:43:42
我的客户端应用程序使用TCP/IP连接到服务器。如果应用程序失去与此服务器的连接(例如,由于服务器崩溃或手动关闭了服务器),我希望它会定时尝试重新连接,直到成功为止。 大概就是 每隔几秒去重连一次服务器的意思

我用的是C# 有大牛会的直接贴上代码 感谢咯
...全文
1131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2018-06-13
  • 打赏
  • 举报
回复
引用 2 楼 weixin_41778183 的回复:
[quote=引用 1 楼 qq_17486399 的回复:] Socket?心跳包机制了解一下,另外可以选择使用开源的SuperSocket,HPSocket
如题 上一下代码呗 [/quote] 网上有相关例子
  • 打赏
  • 举报
回复
短线就能收到事件通知 --> 断线就能收到事件通知
  • 打赏
  • 举报
回复
不要搞几秒钟一个心跳。对于长连接来说,其实短线就能收到事件通知,所以1个小时一次心跳也足够了。这个时候的心跳就是拉去某个状态数据而已。 仅仅对于短链接才需要“悲催的”心跳,必须牺牲了性能,因为短连接本来没有办法做到及时响应对方。
  • 打赏
  • 举报
回复
首先,你可以在发送消息时重连,例如
class MyTcpClient
{
    private bool 判断需要重连
    {
        get
        {
            return false;
        }
    }

    void SendMessage<T>(T message)
    {
        if (判断需要重连)
            Connect(() =>
            {
                SendMessage(message);
            });
        else
        {
            //直接发送
        }
    }

    void Connect(Action callback)
    {
        throw new NotImplementedException();
    }
}
而所谓心跳,就是定时(例如1分种)发送点什么东西,例如一个空格。
wanghui0380 2018-06-12
  • 打赏
  • 举报
回复
无需什么心跳,已连接的tcp,无论你采用异步代码还是同步代码,在对方断线的情况下都有异常。 上代码什么滴就不必了,你自己的tcp代码,在运行调试时,在已连接上对方的情况下,拔掉网线,你自己看那里有异常!是什么异常!tcp里面的socket状态是什么!
  • 打赏
  • 举报
回复
引用 1 楼 qq_17486399 的回复:
Socket?心跳包机制了解一下,另外可以选择使用开源的SuperSocket,HPSocket
如题 上一下代码呗
大鱼> 2018-06-12
  • 打赏
  • 举报
回复
Socket?心跳包机制了解一下,另外可以选择使用开源的SuperSocket,HPSocket

110,537

社区成员

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

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

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