php sigpipe,Python的SIGPIPE信号「建议收藏」

php sigpipe,Python的SIGPIPE信号「建议收藏」Haveyoueverseenasocket.error:[Errno32]BrokenpipemessagewhenrunningaPythonWebserverandwonderedwhatthatmeans?Theruleisthatwhenaprocesstriestowritetoasocketthathasalre…

大家好,又见面了,我是你们的朋友全栈君。

Have you ever seen a socket.error: [Errno 32] Broken pipe message when running a Python Web server and wondered what that means?

The rule is that when a process tries to write to a socket that has already received an RST packet, the SIGPIPE signal is sent to that process which causes the Broken pipe socket.error exception.

Here are two scenarios that you can try that cause SIGPIPE signal to be fired.

1. Server may send an RST packet to a client to abort the socket connection but the client ignores the packet and continues to write to the socket.

To test that behavior. install Cynic, run it

CODE:01.$ cynic

02.INFO     [2012-06-08 05:06:37,040] server: Starting ‘HTTPHtmlResponse’   on port 2000

03.INFO     [2012-06-08 05:06:37,040] server: Starting ‘HTTPJsonResponse’   on port 2001

04.INFO     [2012-06-08 05:06:37,040] server: Starting ‘HTTPNoBodyResponse’ on port 2002

05.INFO     [2012-06-08 05:06:37,040] server: Starting ‘HTTPSlowResponse’   on port 2003

06.INFO     [2012-06-08 05:06:37,040] server: Starting ‘RSTResponse’        on port 2020

07.INFO     [2012-06-08 05:06:37,040] server: Starting ‘RandomDataResponse’ on port 2021

08.INFO     [2012-06-08 05:06:37,040] server: Starting ‘NoResponse’         on port 2022

09.INFO     [2012-06-08 05:06:37,041] server: Starting ‘LogRecordHandler’   on port /tmp/_cynic.sockand then run the client1.py:

CODE:01.import socket

02.

03.# connect to Cynic’s RSTResponse service on port 2020

04.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

05.s.connect((”, 2020))

06.

07.# first read gets an RST packet

08.try:

09.s.recv(1024)

10.except socket.error as e:

11.print e

12.print

13.

14.# write after getting the RST causes SIGPIPE signal

15.# to be sent to this process which causes a socket.error

16.# exception

17.s.send(‘hello’)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/301743/viewspace-733074/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139298.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 孙鑫的java_孙鑫java视频教程「建议收藏」

    孙鑫的java_孙鑫java视频教程「建议收藏」近几年来,提到java相信很多人都不陌生了吧,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。也正是由于互联网的快速发展,学习java的人也是越来越多了。需要注意的是,java和我们平时学习的其它计算机语言还是有区别的。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节…

    2022年5月17日
    46
  • 图论(十三)——平面图和对偶图

    图论(十三)——平面图和对偶图一、平面图概念\quad如果能把图G画在平面上,使得除顶点外,边与边之间没有交叉,称G可以嵌入平面,或称G是可平面图。可平面图G的边不交叉的一种画法,称为G的一种平面嵌入,G的平面嵌入表示的图称为平面图。\quad简单平面图G=(n,m)G=(n,m)G=(n,m)满足m≤3n−6m\le3n-6m≤3n−6,也满足δ≤5\delta\le5δ≤5…

    2022年5月9日
    354
  • C语言指针函数和函数指针区别

    C语言指针函数和函数指针区别C语言函数指针和指针函数的区别C和C++中经常会用到指针,和数据项一样,函数也是有地址的,函数的地址是存储其机器语言代码的内存的开始地址。指针函数和函数指针经常会混淆,一个是返回指针的函数,另一个是指向函数的指针,下面就分别解释指针函数和函数指针的区别。一、指针函数指针函数是返回指针的函数主体是函数,返回值是一个指针基本声明形式:返回数据类型+*+函数名+(变量类型1,……

    2022年6月22日
    21
  • QTcpSocket简单使用[通俗易懂]

    QTcpSocket简单使用[通俗易懂]QTcpServer类提供一个TCP基础服务类继承自QObject这个类用来接收到来的TCP连接,可以指定TCP端口或者用QTcpServer自己挑选一个端口,可以监听一个指定的地址或者所有的机器地址。调用listen()来监听所有的连接,每当一个新的客户端连接到服务端就会发射信号newConnection()调用nextPendingConnection()来接受待处理的连接。返回一个连接的QTcpSocket(),我们可以用这个返回的套接字和客户端进行连接如果有错误,serverErr.

    2025年10月11日
    9
  • SSDP协议_mpp协议

    SSDP协议_mpp协议privatevoidsendDatagramPacket(finalStringip){newThread(newRunnable(){@Overridepublicvoidrun(){try{MulticastSocketmu

    2022年10月9日
    7
  • PHP扫码登录实现「建议收藏」

    去年独立负责整个公司新游戏的后台功能,时间紧任务重,而每个游戏项目都有测试/正式,因此就有俩后台地址,然后就有俩账号,还有不同的权限级别,,,一个游戏还好,但有N个游戏时候,测试同学受不了了,说这么多账号和权限,谁顶得住啊,于是,请示领导同意后,我剥离了公司框架里的管理员功能,以微服务的形式对外提供管理员服务(主要是登录,权限,统计),而微服务的好处是显而易见的,可以做很多很酷的东西,写好接口,就…

    2022年4月7日
    109

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号