半关闭一个套接字会导致 epoll 停止接收事件吗?
创始人
2024-11-21 06:30:25
0

半关闭一个套接字不会导致 epoll 停止接收事件。

半关闭套接字指的是在一个套接字连接的一方调用了 shutdown() 函数来关闭发送或接收功能,但仍然保持连接。

以下是一个代码示例,展示了如何在半关闭套接字上使用 epoll:

import socket
import select

# 创建套接字并连接到服务器
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8080))

# 向服务器发送数据
sock.send('Hello World'.encode())

# 半关闭套接字的发送功能
sock.shutdown(socket.SHUT_WR)

# 创建 epoll 对象
epoll = select.epoll()

# 将套接字注册到 epoll 中
epoll.register(sock.fileno(), select.EPOLLIN)

# 循环等待事件发生
while True:
    events = epoll.poll()

    for fileno, event in events:
        if fileno == sock.fileno():
            if event & select.EPOLLIN:
                # 从套接字中读取数据
                data = sock.recv(1024)
                if data:
                    print('Received:', data.decode())
                else:
                    # 套接字已关闭,退出循环
                    epoll.unregister(sock.fileno())
                    epoll.close()
                    sock.close()
                    break

在上述代码中,首先创建了一个套接字并连接到服务器。然后,向服务器发送数据,然后使用 shutdown() 函数半关闭套接字的发送功能。

接下来,创建了一个 epoll 对象,并将套接字注册到 epoll 中。然后,使用 epoll.poll() 循环等待事件发生。

当套接字可读时,从套接字中读取数据。如果读取到数据,则进行处理。如果没有读取到数据,表示套接字已关闭,此时可以退出循环。

需要注意的是,在退出循环之前,需要将套接字从 epoll 中注销,并关闭套接字和 epoll 对象。

相关内容

热门资讯

突发!随意玩辅助器视频透视挂!... 突发!随意玩辅助器视频透视挂!果然真的有辅助下载(有挂工具)-哔哩哔哩1、下载好随意玩辅助器视频透视...
截至发稿!微信卡五星辅助器!真... 截至发稿!微信卡五星辅助器!真是真的是有辅助挂(发现有挂)-哔哩哔哩1、截至发稿!微信卡五星辅助器!...
做出回应!衢州都莱破解器!真是... 做出回应!衢州都莱破解器!真是有挂辅助软件(有挂实锤)-哔哩哔哩小薇(辅助器软件下载)致您一封信;亲...
今天下午!八仙游戏辅助!一贯存... 今天下午!八仙游戏辅助!一贯存在有辅助软件(有挂讲解)-哔哩哔哩1、进入到八仙游戏辅助是否有挂之后,...
经调查!道游辅助脚本!确实是真... 经调查!道游辅助脚本!确实是真的辅助脚本(有挂存在)-哔哩哔哩1、全新机制【道游辅助脚本ai辅助工具...
据相关数据显示!陕麻圈黑科技!... 据相关数据显示!陕麻圈黑科技!切实是有辅助软件(有挂详细)-哔哩哔哩1、进入游戏-大厅左侧-新手福利...
不少玩家反映!福州十八扑有外g... 不少玩家反映!福州十八扑有外g挂吗!其实有挂辅助修改器(详细教程)-哔哩哔哩1、完成福州十八扑有外g...
记者获悉!福建兄弟13水辅助!... 记者获悉!福建兄弟13水辅助!总是是真的辅助安装(有挂方式)-哔哩哔哩1、完成福建兄弟13水辅助辅助...
截至目前!天天贵阳app破解版... 截至目前!天天贵阳app破解版!都是真的有辅助插件(有挂解惑)-哔哩哔哩1、实时天天贵阳app破解版...
截至发稿!掌中乐游戏中心云南辅... 截至发稿!掌中乐游戏中心云南辅助!一贯存在有辅助app(有挂规律)-哔哩哔哩掌中乐游戏中心云南辅助是...