Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 是否有任何类返回函数的打印?_Python 3.x_Python Sockets - Fatal编程技术网

Python 3.x 是否有任何类返回函数的打印?

Python 3.x 是否有任何类返回函数的打印?,python-3.x,python-sockets,Python 3.x,Python Sockets,我正在开发一个用于读取端口的python程序。我的脚本对每个已检查的打开端口都有一个打印。但是我想删除这个打印并将其放入一个类中。因为当程序员想要看到打印时,他调用类 我可以创建公共类来从主文件(main.py)获取用户输入,并在脚本内部运行,但我无法控制从主文件打印 def ping(目标、刻度): def端口扫描(端口): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 尝试: con=s.connect((目标,端口)) 时间。睡眠(5

我正在开发一个用于读取端口的python程序。我的脚本对每个已检查的打开端口都有一个打印。但是我想删除这个打印并将其放入一个类中。因为当程序员想要看到打印时,他调用类

我可以创建公共类来从主文件(main.py)获取用户输入,并在脚本内部运行,但我无法控制从主文件打印

def ping(目标、刻度):
def端口扫描(端口):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
尝试:
con=s.connect((目标,端口))
时间。睡眠(5)
端口_print='port:',端口“已打开!”
时间。睡眠(5)
#python=sys.exe
#execl(python,python,*sys.argv)
打印('终止')
con.close()
除:
#结果=无
#返回结果
通过
r=1
scal=int(比例)
对于范围(1,刻度)内的x:
线程(target=portscan,kwargs={'port':r})
r+=1
t、 开始()

正如您所见,我创建了变量port_print,我希望当用户在主文件中调用时,会有打印。

使用
队列
绕过
返回
线程中的限制:

from queue import Queue

def ping(target,scale, queue):
    def portscan(port, queue):

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            con = s.connect((target,port))
            time.sleep(5)

            port_print = 'Port :',port,"Is Open!."
            queue.put(port_print)
            time.sleep(5)
            #python = sys.executable
            #os.execl(python, python, * sys.argv)
            print('Terminated')
            con.close()

        except:
            #result = None
            #return result
            pass
    r = 1
    scal = int(scale)
    for x in range(1,scal):

        t = threading.Thread(target=portscan,kwargs={'port':r, queue=queue})
        r += 1
        t.start()

def main():
    my_queue = Queue()
    target = 'some target'
    scale = 10
    ping(target, scale, my_queue)
    random_port_print = my_queue.get()
    print(random_port_print)
未测试,但非常接近正确