簡體   English   中英

在python中輪詢套接字的問題

[英]Problem with polling sockets in python

開始輪詢循環后,第一次迭代后打印的所有消息都要求我在終端中按Enter鍵才能顯示它。

#!/usr/bin/python
import socket, select, os, pty, sys

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 5007))
s.listen(5)

mypoll = select.poll()
mypoll.register(s.fileno() )

while True:
    print "poll time"
    subr = mypoll.poll()
    for x in subr[0]:

        if x == s.fileno():
            conn, addr = s.accept()

            pid, fd = pty.fork()
            if pid != 0:
                mypoll.register(fd)
                print "done. go back to poll now"
            else:
                print "forked"
                #handles new connection

        else:
            data = os.read(x,1024)
            print data

第一次迭代之后,您是否沒有注冊pty fd,然后進行輪詢? 而且它的fd永遠不會等於套接字fd,因此您將讀入pty fd。 現在不是從您的終端讀取信息嗎? 因此,不會鍵入返回值來導致其“打印數據”嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM