`
猫太的鱼
  • 浏览: 241883 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

"connection reset by peer"的可能原因

阅读更多
对方没有close就cancel了socket   pair,你就会收到一个sig_pipe信号然后strerror会显示“connection   reset   by   peer”的错误。防止程序退出解决方法就是处理SIGPIPE信号


屏蔽信号的代码

      void   InstalSignal()
{
    signal(SIGHUP     ,SIG_IGN   );       /*   hangup,   generated   when   terminal   disconnects   */
    signal(SIGINT     ,SIG_IGN   );       /*   interrupt,   generated   from   terminal   special   char   */
    signal(SIGQUIT   ,SIG_IGN   );       /*   (*)   quit,   generated   from   terminal   special   char   */
    signal(SIGILL     ,SIG_IGN   );       /*   (*)   illegal   instruction   (not   reset   when   caught)*/
    signal(SIGTRAP   ,SIG_IGN   );       /*   (*)   trace   trap   (not   reset   when   caught)   */
    signal(SIGABRT   ,SIG_IGN   );       /*   (*)   abort   process   */
    #ifdef   D_AIX
    signal(SIGEMT     ,SIG_IGN   );       /*   EMT   intruction   */
    #endif
    signal(SIGFPE     ,SIG_IGN   );       /*   (*)   floating   point   exception   */
    signal(SIGKILL   ,SIG_IGN   );       /*   kill   (cannot   be   caught   or   ignored)   */
    signal(SIGBUS     ,SIG_IGN   );       /*   (*)   bus   error   (specification   exception)   */
    signal(SIGSEGV   ,SIG_IGN   );       /*   (*)   segmentation   violation   */
    signal(SIGSYS     ,SIG_IGN   );       /*   (*)   bad   argument   to   system   call   */
    signal(SIGPIPE   ,SIG_IGN   );       /*   write   on   a   pipe   with   no   one   to   read   it   */
    signal(SIGALRM   ,SIG_IGN   );       /*   alarm   clock   timeout   */
    //signal(SIGTERM   ,stopproc   );     /*   software   termination   signal   */
    signal(SIGURG     ,SIG_IGN   );       /*   (+)   urgent   contition   on   I/O   channel   */
    signal(SIGSTOP   ,SIG_IGN   );       /*   (@)   stop   (cannot   be   caught   or   ignored)   */
    signal(SIGTSTP   ,SIG_IGN   );       /*   (@)   interactive   stop   */
    signal(SIGCONT   ,SIG_IGN   );       /*   (!)   continue   (cannot   be   caught   or   ignored)   */
    signal(SIGCHLD   ,SIG_IGN);         /*   (+)   sent   to   parent   on   child   stop   or   exit   */
    signal(SIGTTIN   ,SIG_IGN);         /*   (@)   background   read   attempted   from   control   terminal*/
    signal(SIGTTOU   ,SIG_IGN);         /*   (@)   background   write   attempted   to   control   terminal   */
    signal(SIGIO       ,SIG_IGN);         /*   (+)   I/O   possible,   or   completed   */
    signal(SIGXCPU   ,SIG_IGN);         /*   cpu   time   limit   exceeded   (see   setrlimit())   */
    signal(SIGXFSZ   ,SIG_IGN);         /*   file   size   limit   exceeded   (see   setrlimit())   */
   
    #ifdef   D_AIX
    signal(SIGMSG     ,SIG_IGN);         /*   input   data   is   in   the   ring   buffer   */
    #endif
   
    signal(SIGWINCH,SIG_IGN);         /*   (+)   window   size   changed   */
    signal(SIGPWR     ,SIG_IGN);         /*   (+)   power-fail   restart   */
    //signal(SIGUSR1   ,stopproc);       /*   user   defined   signal   1   */
    //signal(SIGUSR2   ,stopproc);       /*   user   defined   signal   2   */
    signal(SIGPROF   ,SIG_IGN);         /*   profiling   time   alarm   (see   setitimer)   */
   
    #ifdef   D_AIX
    signal(SIGDANGER,SIG_IGN);       /*   system   crash   imminent;   free   up   some   page   space   */
    #endif
   
    signal(SIGVTALRM,SIG_IGN);       /*   virtual   time   alarm   (see   setitimer)   */
   
    #ifdef   D_AIX
    signal(SIGMIGRATE,SIG_IGN);     /*   migrate   process   */
    signal(SIGPRE     ,SIG_IGN);         /*   programming   exception   */
    signal(SIGVIRT   ,SIG_IGN);         /*   AIX   virtual   time   alarm   */  
    signal(SIGALRM1,SIG_IGN);         /*   m:n   condition   variables   -   RESERVED   -   DON 'T   USE   */
    signal(SIGWAITING,SIG_IGN);     /*   m:n   scheduling   -   RESERVED   -   DON 'T   USE   */
    signal(SIGCPUFAIL   ,SIG_IGN);   /*   Predictive   De-configuration   of   Processors   -   */
    signal(SIGKAP,SIG_IGN);             /*   keep   alive   poll   from   native   keyboard   */
    signal(SIGRETRACT,SIG_IGN);     /*   monitor   mode   should   be   relinguished   */
    signal(SIGSOUND     ,SIG_IGN);     /*   sound   control   has   completed   */
    signal(SIGSAK         ,SIG_IGN);     /*   secure   attention   key   */
    #endif
}
分享到:
评论

相关推荐

    linux iptables防火墙黑名单(封IP) Connection reset by peer

    linux iptables防火墙黑名单(封IP) Connection reset by peer

    connection reset by peer问题总结及解决方案

    如果用户在服务器仍在发送数据时关闭了浏览器,服务器无法接收到客户端的确认,可能会导致"Connection Reset by Peer"错误。在这种情况下,服务器端可以通过增加异常处理,比如使用`try...catch`结构来捕获并处理...

    java.net.SocketException Connection reset 解决方法

    * Connection reset by peer:Connection reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器端之间的连接断开后,导致连接的一端继续发送数据,引发该异常。 实践经验 通过实践经验,我们可以...

    PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法

    然而,在处理网络连接时,有时会遇到错误提示"CURL ERROR: Recv failure: Connection reset by peer"。这个错误通常意味着在数据传输过程中,服务器或客户端意外地断开了连接,导致通信失败。以下是针对该问题的详细...

    connection_reset.rar

    解决oracle数据库发生'Connection reset by peer' or 'Connection reset'的错误 这边的数据库连接是kettle自带的h2数据库,只要有kettle就有这个数据库,目录位于data-integration\samples\db\,连接方式是 ...

    Docker配置阿里云镜像加速pull的实现

    read tcp 192.168.31.60:55550->104.18.123.25:443: read: connection reset by peer 传输异常 然后看见网上说可以配置阿里云提供的镜像加速 具体方式 进入阿里云的容器镜像服务 快速链接: 容器镜像服务 复制加速...

    java中的connection reset 异常处理分析

    ECONNRESET错误表示"connection reset by peer",即对方(通常是服务器)主动关闭了连接。这可能是因为服务进程在客户端之前结束,导致服务器发送一个FIN包来结束连接。如果客户端此时尝试再次发送数据,服务器会...

    Connection

    根据给定的文件信息,我们可以总结出以下关于SQL数据库连接(Connection)的相关知识点: ### SQL数据库连接...在实际开发中,通常还会使用异常处理机制来捕获并处理可能出现的运行时错误,确保程序的健壮性。

    java.net.SocketException: Connection reset 解决方法

    例如,如果服务器端关闭了连接,而客户端还在尝试发送数据,那么客户端会收到"Connection reset by peer"的错误信息。 2. **未关闭的连接导致异常**:另一种情况是一端程序退出,但未正确关闭Socket连接。当另一端...

    sms-SMSCAT2019.conf

    此资源为深信服外置短信中心接口,可使用官方的工具smsservice工具,但短信猫放在其它位置通过网络使用外部接口时,频繁出现连接不稳定,[SMS_SP]readn failed: Connection reset by peer,此时主要原因在连接配置上...

    XXL-JOB调度系统学习、调度流程、spring生命周期

    XXL-JOB是一个分布式任务调度平台,其设计思想是将调度行为抽象成一个独立的“调度中心”,这个中心不承担具体的业务逻辑,而是负责发起调度请求。任务则被抽象为分散的`JobHandler`,由“执行器”来统一管理和执行...

    远程桌面软件:rustdesk

    主要语言:Rust 项目分类:[工具] [应用软件] 项目标签:[桌面应用] 推荐理由:一款免费远程桌面软件,支持多平台,包括Linux、Mac、Windows和Android。它以开箱即用的方式提供远程桌面功能,无需任何复杂的配置。...

    test-connection-reset

    有关详细说明,请参考 。 在本地重现此问题的步骤: 设定环境 npm install 启动服务器 npm start 在单独的终端中运行测试客户端 npm run client ... 因为从上游的角度来看,连接已关闭,所以它为此请求发送了一个[RST...

    Modbus TCP客户端和服务器示例

    这个项目可能分为两部分:一部分是实现Modbus TCP客户端的类,另一部分是实现Modbus TCP服务器的类。客户端类可能包含连接到服务器、发送请求和解析响应的方法;服务器类则可能包括启动监听、接收连接、处理请求和...

    platform-tools_r28.0.2-linux adb fastboot

    Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...

    platform-tools-r28.0.2-windows-adb-fastboot

    Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...

    php curl常见错误:SSL错误、bool(false)

    这可能是由于多种原因,如网络问题、服务器配置错误、SSL问题、URL错误等。 #### 检查cURL错误 当出现bool(false)的返回值时,应使用curl_error()函数来获取详细的错误信息,帮助开发者定位问题。 ```php var_dump...

Global site tag (gtag.js) - Google Analytics