我有一个项目,我生成子进程,再次接受端口号绑定。端口号由我的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"
我可以在我的情况下使用它吗?这不会打开一个端口而不关闭它以供进一步使用吗?
答案 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.