如何检测服务器正在关闭UNIX域套接字?

布赖恩·施伦克

我在弄乱python扭曲的库,而且似乎无法弄清楚如何让我的客户端检测关闭其套接字的服务器。我的客户端继续让我将数据发送到不存在的服务器。这是我的服务器:

test_server.py

from twisted.internet import protocol, reactor, endpoints, stdio
from twisted.protocols.basic import LineReceiver


class ConnectionProtocol(LineReceiver):
    from os import linesep as delimiter

    def lineReceived(self, line):
        print 'got line: %s' % line
        self.sendLine(line)


class ConnectionFactory(protocol.Factory):
    def buildProtocol(self, addr):
        return ConnectionProtocol()


def main():
    endpoint = endpoints.UNIXServerEndpoint(reactor, './test.sock',  5, 0777, False)
    endpoint.listen(ConnectionFactory())
    print 'starting the reactor'
    reactor.run()


main()

它所做的只是将它返回的每一行发送回连接的客户端。这是客户:

test_client.py

import os
from twisted.internet import protocol, reactor, endpoints, stdio
from twisted.protocols.basic import LineReceiver


class CommandProtocol(protocol.Protocol):
    def dataReceived(self, data):
        print data,


class StdinProtocol(LineReceiver):
    from os import linesep as delimiter

    def __init__(self, client):
        self._client = client

    def connectionMade(self):
        self.transport.write('>>> ')

    def lineReceived(self, line):
        print 'writing line: %s' % line
        self._client.transport.write(line + os.linesep)


def printError(failure):
    print str(failure)


def main():
    point = endpoints.UNIXClientEndpoint(reactor, './test.sock')
    proto = CommandProtocol()
    d = endpoints.connectProtocol(point, proto)
    d.addErrback(printError)

    stdio.StandardIO(StdinProtocol(proto))
    reactor.run()


main()

如果我先运行服务器,然后运行客户端,然后终止服务器,则客户端仍然会写入CommandProtocol的传输,就像什么也没有发生。我认为该errback功能至少会报告一些内容。在客户端在服务器之前运行的情况下,将errback使用ConnectError调用函数,但是我特别希望检测客户端已连接到服务器并且服务器退出的情况。

如何检测服务器已关闭?

让·保罗·卡德隆(Jean-Paul Calderone)

ITransport.write 如果在已断开连接的传输上被调用,则为无声无操作。

如果要了解连接已丢失,请重写该connectionLost方法。一旦知道连接已丢失,就可以安排程序停止接受输入或对收到的输入进行其他操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简单的Unix域套接字服务器

来自分类Dev

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

来自分类Dev

UNIX域套接字C ++服务器无法将数据返回给客户端

来自分类Dev

Unix域套接字C服务器和Python客户端

来自分类Dev

如何在Ruby中检测断开的Unix域套接字?

来自分类Dev

如何使服务器套接字广播在那里,并让客户端套接字检测并连接

来自分类Dev

从服务器已关闭的SSL套接字读取

来自分类Dev

服务器的子级关闭套接字时

来自分类Dev

在python中关闭服务器后,如何让客户端套接字继续监听服务器?

来自分类Dev

HTTP 服务器如何使用 tcp 原始套接字检测和处理非 http 消息

来自分类Dev

Java:如何毫无例外地停止服务器(关闭套接字)?

来自分类Dev

如何正常关闭异步服务器套接字?C#

来自分类Dev

C ++:接收SIGKILL时如何关闭TCP套接字(服务器)

来自分类Dev

当我无权访问服务器时,如何从客户端关闭套接字连接?

来自分类Dev

在多线程HTTP服务器中发送后,如何干净地关闭套接字?

来自分类Dev

如何使用unix套接字而不是localhost从python调用solr服务器?

来自分类Dev

如何更改服务器端的 ssh 代理 unix 套接字位置

来自分类Dev

Django Postgres导入错误:服务器是否在本地运行并在Unix域套接字上接受连接?

来自分类Dev

上载文件后,套接字服务器抛出“套接字已关闭”

来自分类Dev

如何在Citrus中测试套接字服务器?

来自分类Dev

如何区分服务器上的网络套接字

来自分类Dev

如何使用套接字从服务器读取数据?

来自分类Dev

如何正确重启服务器套接字?

来自分类Dev

如何“跟踪” Unix域套接字?

来自分类Dev

如何创建Unix域套接字?

来自分类Dev

如何检测孤立的Unix套接字文件?

来自分类Dev

如何在PF_UNIX套接字的服务器端打印客户端sun_paths名称?

来自分类Dev

当服务器可能不可用时如何创建 Node.js Unix 套接字客户端

来自分类Dev

如何检测客户端何时与UDS断开连接(Unix域套接字)

Related 相关文章

  1. 1

    简单的Unix域套接字服务器

  2. 2

    如何使服务器套接字广播到那里,并让客户端套接字检测并连接

  3. 3

    UNIX域套接字C ++服务器无法将数据返回给客户端

  4. 4

    Unix域套接字C服务器和Python客户端

  5. 5

    如何在Ruby中检测断开的Unix域套接字?

  6. 6

    如何使服务器套接字广播在那里,并让客户端套接字检测并连接

  7. 7

    从服务器已关闭的SSL套接字读取

  8. 8

    服务器的子级关闭套接字时

  9. 9

    在python中关闭服务器后,如何让客户端套接字继续监听服务器?

  10. 10

    HTTP 服务器如何使用 tcp 原始套接字检测和处理非 http 消息

  11. 11

    Java:如何毫无例外地停止服务器(关闭套接字)?

  12. 12

    如何正常关闭异步服务器套接字?C#

  13. 13

    C ++:接收SIGKILL时如何关闭TCP套接字(服务器)

  14. 14

    当我无权访问服务器时,如何从客户端关闭套接字连接?

  15. 15

    在多线程HTTP服务器中发送后,如何干净地关闭套接字?

  16. 16

    如何使用unix套接字而不是localhost从python调用solr服务器?

  17. 17

    如何更改服务器端的 ssh 代理 unix 套接字位置

  18. 18

    Django Postgres导入错误:服务器是否在本地运行并在Unix域套接字上接受连接?

  19. 19

    上载文件后,套接字服务器抛出“套接字已关闭”

  20. 20

    如何在Citrus中测试套接字服务器?

  21. 21

    如何区分服务器上的网络套接字

  22. 22

    如何使用套接字从服务器读取数据?

  23. 23

    如何正确重启服务器套接字?

  24. 24

    如何“跟踪” Unix域套接字?

  25. 25

    如何创建Unix域套接字?

  26. 26

    如何检测孤立的Unix套接字文件?

  27. 27

    如何在PF_UNIX套接字的服务器端打印客户端sun_paths名称?

  28. 28

    当服务器可能不可用时如何创建 Node.js Unix 套接字客户端

  29. 29

    如何检测客户端何时与UDS断开连接(Unix域套接字)

热门标签

归档