验证python

时间:2017-04-07 06:10:54

标签: python linux unix port

我有一个项目,我生成子进程,再次接受端口号绑定。端口号由我的Python脚本分配,我只需要在49152和65535之间选择一个随机端口。

我想验证端口是否可用,并且本地系统上的任何其他工具都没有使用它(* nix)。

来自another question我有这个片段:

import socket;
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('127.0.0.1',80))
if result == 0:
   print "Port is open"
else:
   print "Port is not open"

我可以在我的情况下使用它吗?这不会打开一个端口而不关闭它以供进一步使用吗?

2 个答案:

答案 0 :(得分:2)

只需创建一个临时套接字,然后尝试绑定到该端口以查看它是否可用。验证端口可用后关闭套接字。

def tryPort(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = False
    try:
        sock.bind(("0.0.0.0", port))
        result = True
    except:
        print("Port is in use")
    sock.close()
    return result

答案 1 :(得分:1)

代码很好,它创建一个套接字并尝试连接。它不会打开或关闭任何端口。您只需要在末尾添加此行以合并套接字: 'modules' => [ 'gridview' => [ 'class' => '\kartik\grid\Module', //'downloadAction' => 'export', 'downloadAction' => 'gridview/export/download', ] So please help me how to fix this issue.