Python服务器读取Stdin时出错

2024-04-19 12:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个python服务器来连接3个客户端。我已经完成了所有的工作,现在,当我为服务器执行stdin命令(如quit、see(client)等)时,我意识到我有一个明显的大问题:

结构如下:

import sys, os, traceback, optparse
import time, datetime
import random
import socket
import thread
import select

  while True:
        data,addr = dad_sock.recvfrom(UDP)
        if(data != ""):
            print "First_Data:",sys.stdin.readline()
            thread.start_new_thread(MAIN_son,(UDP,data,addr,number_sons))
            number_threads += 1
            print "Second_Data:",sys.stdin.readline()

MAIN琰son所做的是创建一个新线程来查找接收到的pkg并保持客户端与服务器的连接。你知道吗

我的问题是:

Data: ERROR, UNEXPECTED EXCEPTION I/O operation on closed file Traceback (most recent call last):

File "srv.py", line 588, in start()

File "srv.py", line 136, in start main()

File "srv.py", line 481, in main setup()

File "srv.py", line 164, in setup dad_wait(srv.UDP,number_sons)

File "srv.py", line 172, in dad_wait print "Data:",sys.stdin.readline()

ValueError: I/O operation on closed file

第172行是我对stdin()的第一次读取,但程序允许我这样做,所以我认为它在第二轮时失败了

我需要说的是,当主线程被调用时,开始打印所有来自客户端包的pkg信息。我不知道这些指纹是否是原因。你知道吗

如果有人需要关于代码的更多信息,我将刷新问题,谢谢


Tags: inpyimport服务器客户端datastdinsys