当前位置: 首页 > 知识库问答 >
问题:

Python关闭tcp连接

郑波
2023-03-14

提前致谢

共有1个答案

公孙英飙
2023-03-14

一个错误的文件描述符,很可能意味着套接字已经被另一个线程关闭了。

这里有一些关于一般做法的想法。对于客户机,知道它已断开连接的一种方法是检查recv()值是否为0。如果是,则表示远程端已关闭连接。基本上,您应该使用select(或poll)并通过所有客户端和服务器的fds来进行选择。如果您在任何fds上获得一个读取事件,那么根据fd类型,下面是发生的情况。如果fd是服务器类型,那么读取事件意味着存在挂起的连接,您应该发出accept()以获得新的连接。另一方面,如果hte fd是非服务器类型(意味着常规的tcp连接),那么读取事件意味着有一些数据,您应该发出recv()事件来读取数据。

您可以使用一个循环来进行选择。基本上,使用select()调用启动循环,获得事件后,对该事件执行某些操作,然后重新进入循环并发出下一个select()。您可能会发现以下链接很有帮助:http://ilab.cs.byu.edu/python/select/echoserver.html和http://docs.python.org/2/library/socket.html

 类似资料:
  • 我在Python中制作了一个游戏服务器,它使用心理学2连接到PostgreSQL数据库。我看到的例子,我看到当一个连接到一个数据库被创建,应该关闭连接时完成查询,例如每个客户端: 好的,当我启动服务器时,我有: 在我的课堂里 也就是说,我对来自所有客户的所有查询使用相同的连接对象,并且从不关闭连接,这看起来比为每个客户打开和关闭连接要好,我的服务器显然工作得很好。你想到这个了吗?这个做得好吗?不做

  • 我已经配置了HAProxy(1.5.4,但我也尝试了1.5.14),以便在TCP模式下平衡5672端口上公开AMQP协议(WSO2 Message Broker)的两台服务器。客户端通过Haproxy创建并使用到AMQP服务器的永久连接。 我更改了客户端和服务器TCP keepalive超时,设置net.ipv4.tcp_keepAlive_time=120(CentOS 7)。 在HAProxy

  • 我试图使用Akka和Scala编写一个TCP服务器,它将实例化参与者,并在客户端分别连接和断开连接时停止参与者。我有一个TCP绑定执行器, 上面实例化上的TCP侦听器,并将处理程序参与者注册到每个连接。 我没有在附近配置的非Windows机器上进行测试,因为我认为这与我在Windows上运行有关,因为在搜索之后,我发现了一个仍然打开的bug--https://github.com/akka/akk

  • 问题内容: 我想知道,您如何关闭与请求(python-requests.org)的连接? 有了它,但我要如何做请求相同的? 码: 问题答案: 正如这里所讨论的,实际上没有HTTP连接之类的东西,而httplib所指的HTTPConnection实际上是底层的TCP连接,它根本不了解您的请求。索取摘要,您将永远看不到它。 实际上,最新版本的Requests确实使TCP连接保持活动状态。.如果您确实希

  • 我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)

  • 根据boost asio文档,如果我对一个异步连接操作挂起的套接字调用close,处理程序将被“立即”调用,并带有错误代码。从文档中可以看到: 此函数用于关闭套接字。任何异步发送、接收或连接操作都将立即取消,并以boost::asio::error::operation_aborted错误完成。 但实际上并不是立即/同步调用处理程序,而是在控制返回到io_service时异步调用它。如果连接实际成