用POLL的方式,没有跑出结果来,立此存照

时间:2024-10-24 12:36:20

咦,这些内容,和我以前看内核时的东东,对应起来了。。

SELECT,POLL,EPOLL,非阻塞,异步之类的。。。

但我没有调出来。回家有空了可以看看,不用再敲打代码啦。。。

#!/usr/bin/env python
import socket, sys, select

port = 54321
host = '127.0.0.1'

spinsize = 10
spinpos = 0
spindir = 1

def spin():
    global spinsize, spinpos, spindir
    spinstr = '.' * spinpos + \
    '|' + '.' * (spinsize - spinpos -1 )
    sys.stdout.write('\r' + spinstr + ' ')
    sys.stdout.flush()

    spinpos += spindir
    if spinpos < 0:
    spindir = 1
    spinpos = 1
    elif spinpos >= spinsize:
    spinpos = 2
    spindir = -1

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))

p = select.poll()
p.register(s.fileno(), select.POLLIN | select.POLLERR | select.POLLHUP)

while 1:
    results = p.poll(50)
    if len(results):
    if results[0][1] == select.POLLIN:
        data = s.recv(4096)
        if not len(data):
        print "\rRemote end closed connection; exiting."
        break
        sys.stdout.write("\rReceived: " + data)
        sys.stdout.flush()
    else:
        print "\rProblem occurred; exiting."
        sys.exit(0)
spin()

相关文章