select和poll

import socket,select
s = socket.socket()

port = 1234
ip = "192.168.0.108"
s.bind((ip,port))
s.listen(5)
inputs = [s]

while True:
    rs,ws,es = select.select(inputs, [], [])
    for r in rs:
        print('for lookup is runing.....')
        if r is s:
            print('begin exec accept.....')
            c,addr = s.accept()
            print('Got connection from', addr)
            inputs.append(c)
        else:
            try:
                data = r.recv(1024)
                disconnected = not data
            except socket.error:
                disconnected = True

            if disconnected:
                print(r.getpeername(),'disconnected--go')
                inputs.remove(r)
                r.close()

            else:
                print(data)
import socket,select

s = socket.socket()

ip="192.168.0.108"
port=1234
s.bind((ip,port))
s.listen(5)

fdmap = {s.fileno():s}

p = select.poll()
p.register(s)
while True:
    events = p.poll()
    for fd, event in events:
        if fd == s.fileno():
            c,addr = s.accept()
            print('Got connection from',addr)
            p.register(c)
            fdmap[c.fileno()] = c
        elif event & select.POLLIN:
            data = fdmap[fd].recv(1024)
            if not data:
                print(fdmap[fd].getpeername(),"diconnected")
                p.unregister(fd)
                del fdmap[fd]
            else:
                print(data)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容