加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

select —— poll —— epoll

发布时间:2020-12-14 03:46:41 所属栏目:大数据 来源:网络整理
导读:import socket,selects = socket.socket()s.setblocking(False)s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1 )s.bind(( ‘ 127.0.0.1 ‘ ,6666 ))s.listen()rlist = [s,]wlist = []erlist = [] while True: rs,ws,er = select.select(rlist,wlist

import socket,select
s=socket.socket()
s.setblocking(False)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((127.0.0.1,6666))
s.listen()
rlist=[s,]
wlist=[]
erlist=[]
while True:
    rs,ws,er=select.select(rlist,wlist,erlist)
    print(1)
    for i in rs:
        if i is s:
            con,add=s.accept()
            rlist.append(con)
        else:
            date=i.recv(1024)
            if not date:
                rlist.remove(i)
            print(date.decode())
            i.send(date)
    for i in erlist:
        print(i)
View Code ——select 服务端

import socket,select,time
s=socket.socket()
s.setsockopt(socket.SOL_SOCKET,6666))
s.listen()
poll=select.poll()
poll_dic={s.fileno(): s,}
poll.register(s,select.POLLIN | select.POLLERR)
while True:
    try:
        events=poll.poll()
        for fd,event in events:
            print(fd,event)
            if fd == s.fileno():
                con,add=s.accept()
                poll_dic[con.fileno()] = con
                poll.register(con,select.POLLIN | select.POLLERR)
            elif event == select.POLLIN:

                date = poll_dic[fd].recv(1024)
                print(date.decode())
                if not date:
                    print(进来了)
                    poll.unregister(fd)
                    poll_dic[fd].close()
                    del poll_dic[fd]

    except:
        poll.unregister(s)
View Code ——poll 服务端

import socket,select
s=socket.socket()
s.setsockopt(socket.SOL_SOCKET,6666))
s.listen()
poll=select.poll()
poll_dict={s.fileno():s}
def a(fd):
    poll.unregister(fd)
    poll_dict[fd].close()
    del poll_dict[fd]

def main():
    poll.register(s,select.POLLIN | select.POLLERR)
    while True:
        p=poll.poll()
        for fd,event in p:
            if fd == s.fileno():
                con,addr = s.accept()
                poll.register(con,select.POLLIN | select.POLLERR)
                poll_dict[con.fileno()]=con
            elif event == select.POLLIN:
                date=poll_dict[fd].recv(1024)
                if not date:
                    a(fd)
                    continue
                print(date.decode(),111)
                poll_dict[fd].send(date)
            elif event == select.POLLERR:
                a(fd)
if __name__ == __main__:
    main()
View Code ——POLL加一服务端

?

import socket,selectors
s=socket.socket()
s.setsockopt(socket.SOL_SOCKET,6666))
s.listen()
epoll=selectors.DefaultSelector()
def accept_(s):
    con,addr=s.accept()
    epoll.register(con,selectors.EVENT_READ,recv_)

def recv_(con):
    try:
        date=con.recv(1024)
        if not date:
            raise ‘‘
        print(date.decode())
        con.send(date)
    except:
        epoll.unregister(con)
        con.close()
        print(断开连接)

def main():
    epoll.register(s,accept_)
    while True:
        s_eoll=epoll.select()
        for key,event in s_eoll:
            ac=key.data   #这是文件指针accept_
            print(key,这是KEY)
            ac(key.fileobj)
if __name__ == __main__:
    main()
View Code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读