问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

socket断线如何重连

发布网友 发布时间:2022-04-30 05:11

我来回答

3个回答

热心网友 时间:2022-04-18 18:31

当Socket.Conneted == false时,调用如下函数进行判断:

///
/// 当socket.connected为false时,进一步确定下当前连接状态
/// 
/// 
private bool IsSocketConnected()
{
    #region remarks
    /********************************************************************************************
     * 当Socket.Conneted为false时, 如果您需要确定连接的当前状态,请进行非阻塞、零字节的 Send 调用。
     * 如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字仍然处于连接状态; 
     * 否则,该套接字不再处于连接状态。
     * Depending on 
    ********************************************************************************************/
    #endregion
#region 过程
            // This is how you can determine whether a socket is still connected.
            bool connectState = true;
            bool blockingState = socket.Blocking;
            try
            {
                byte[] tmp = new byte[1];
socket.Blocking = false;
                socket.Send(tmp, 0, 0);
                //Console.WriteLine("Connected!");
                connectState = true; //若Send错误会跳去执行catch体,而不会执行其try体里其之后的代码
            }
            catch (SocketException e)
            {
                // 10035 == WSAEWOULDBLOCK
                if (e.NativeErrorCode.Equals(10035))
                {
                    //Console.WriteLine("Still Connected, but the Send would block");
                    connectState = true;
                }
else
                {
                    //Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
                    connectState = false;
                }
            }
            finally
            {
                socket.Blocking = blockingState;
            }
//Console.WriteLine("Connected: {0}", client.Connected);
            return connectState;
            #endregion
}

热心网友 时间:2022-04-18 19:49

所谓断线 一般是基于TCP的长连接的 保持长连接的方式用心跳包来维持
如果发生掉线
你可以通过以多线程的方式 来实现 一个线程用于心跳包的发送 位置长连接 一个用于检测连接是否中断 如果发生中断 你就通过捕获到中断的事件来重新调用连接函数即可

热心网友 时间:2022-04-18 21:24

再发一遍connect请求
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 Socket 客户端重连机制 socket通讯。要求断线后自动重连。我怎么写也没搞定。求高手 什么是工程造价管理,其基本内容有哪些,它的基本原理是什么? “项目内容”、“技术方案”和“技术路线”三者有什么区别? 项目概述是什么? 工程建设的原理是什么? Speedstep技术原理是什么意思? 好用的道好项目管理系统实现原理是什么 asp课程项目设计的基本原理和采用的主要方法与技术是什么? 乡镇双拥领导小组成员应该如何组成 网络计划技术的基本原理是什么 求推荐适合女生的头戴式耳机 预算500以内。 体育运动项目中跳跃的基本技术原理有哪些? 想买头戴式的耳机 女生用 哪位能推荐一些 项目原理 马不停蹄 造车新势力各掌门"亲力亲为" 集体土地征收补偿费怎么计算 有个小朋友在识字活动中因为知道自己认识的字不多拒接参加老师的识字 软件开发项目依据的技术原理是什么 哪位大佬推荐一下3-400的头戴式耳机,女生用 socket 断开连接后重连 C# socket 通信系统,socket断线重连问题 用心跳包能实现socket通信断开后自动重连吗 java socket如果服务端掉线 客户端应该怎样重连,实现的思路是怎么样的,最好能有具体的代码参考一下 C# socket 断线重连 C++ socket客户端断线后如何重新连接 socket 短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些_百 ... python socket客户端怎么实现断线重连 求代码示范 谢谢 C# 如何防止socket重连接? android socket怎样实现断网重连 websocket怎么自动重连 socket 如果不关闭会自动关闭吗?为什么要心跳连接? PHP socket重连机制实现 EXCEL如何公式设置达到指定条件自动填写指定数字 爬楼梯必须用什么的速度爬 小米手机铃声下载地址 跪求!!! 小米手机1s的内置铃声去哪里下载? 常用的楼梯相关部件名称及叫法? 清新英文歌小米手机来电铃声 小米手机里面有一个自带的铃声叫做childhood 请问一下哪里有下载的?