当前位置: 首页 > 面试题库 >

如何处理Linux套接口POLLERR,POLLHUP和POLLNVAL?

左丘源
2023-03-14
问题内容

我想知道当轮询设置这些位时应该怎么做?关闭插座,忽略它还是什么?


问题答案:

POLLHUP装置插座不再连接。在TCP中,这意味着已接收和发送FIN。

A
POLLERR表示套接字收到异步错误。在TCP中,这通常意味着已经接收或发送了RST。如果文件描述符不是套接字,则POLLERR可能意味着设备不支持轮询。

对于上述两种情况,套接字文件描述符仍处于打开状态,并且尚未关闭(但shutdown()可能已经被调用)。close()文件描述符上的A
将释放仍代表套接字保留的资源。从理论上讲,应该可以立即重用套接字(例如,通过另一个connect()调用)。

A POLLNVAL表示套接字文件描述符未打开。这将是一个错误close()



 类似资料:
  • 终止TCP/IP连接的最佳方法是什么,该连接清理了系统上的开放套接字,但让远程方挂起。那就是我想要关闭一个插座的方式,对我来说是最低的成本,但对他们来说是最高的成本。 @尼古拉斯·威尔逊: 使用tcprepair似乎是个好主意。当套接字在TCP_REPAIR模式下关闭时,不会发送FIN或RST数据包。远程插座挂起。我要去试试看然后回去报告。下面是我的(未经测试的)代码: 只是不要关闭它。打开的插座

  • 问题内容: 标记界面没有任何东西。它仅包含接口声明,然后JVM如何对实现此标记接口的类进行处理? 我们可以创建任何新的标记器接口吗? 问题答案: 您的问题确实应该是 编译器 如何处理标记接口,而答案是: 与其他接口没有什么不同 。例如,假设我声明了一个新的标记接口: …然后声明一个实现的类: 我现在可以通过type的引用来引用的实例: …,并(在运行时)检查对象是否实现: 后一种情况通常是使用标记

  • 问题内容: 直截了当:我正在使用node.js,socket.io和Redis进行私人聊天系统。 在连接时,用户将其网站ID(userID)传递给node.js服务器。他可能有多个连接,所以我必须以某种方式将(每个连接的)socketID和userID配对。我在考虑使用redis存储userID-> sessionID对。但是,当用户断开连接时,我需要从redis中删除该对。但是我只有socket

  • 问题内容: 大家好。我有一个使用ServerSocket和Socket类用Java编写的服务器。 我希望能够检测并处理断开连接,然后在必要时重新连接新客户端。 检测客户端断开连接,关闭套接字然后接受新客户端的正确步骤是什么? 问题答案: 大概是在从套接字读取数据,也许是在输入流上使用包装器,例如BufferedReader。在这种情况下,当相应的读取操作返回-1(对于原始read()调用)或为nu

  • 处理器接口 在服务端,处理器接口用来把服务跟具体的服务器绑定在一起。在这里,服务是指独立于具体传输协议的 RPC 服务,它是由 Service 类型实现的。而具体的服务器是指 http,tcp,udp,websocket 等服务器,这些服务器是由语言本身所提供的标准库、第三方类库或框架实现的。 在 C# 中,该接口定义如下: public interface IHandler<T> { T

  • 问题内容: 假设我们在C中有一个使用sleep()函数的程序 该程序执行并进入睡眠状态。然后,我们输入+ 将SIGINT信号发送到该进程。 我们知道接收到SIGINT时的默认操作是终止该进程,我们也知道每当睡眠进程收到信号时,sleep()函数都会恢复该进程。 我的教科书上说,为了允许sleep()函数返回,我们必须安装一个SIGINT处理程序,如下所示: 虽然代码看起来很简单,但是如果我想更深入