检查套接字是否忙
Check if a socket is busy or not
我是 Python 的套接字编程新手。我在Python 3.7中写了下面的代码:
trialSocketList.py
import subprocess
import sys
HOST = sys.argv[1]
PORT = sys.argv[2]
command = "tnc " + HOST + " -PORT "
print(command)
subprocess.call(command + PORT)
我在 Windows CMD 中传递以下内容:
python trialSocketList.py "127.0.0.1" 445
但是我在执行上面的代码时出现了以下错误:
tnc 127.0.0.1 -PORT
Traceback (most recent call last):
File "trialSocketList.py", line 14, in <module>
subprocess.call(command + PORT)
File "C:\Python37\lib\subprocess.py", line 323, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python37\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Python37\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
当我在同一代码中尝试使用 netstat -an
而不是命令 tnc 127.0.0.1 -PORT
时,代码运行完美。以上几行代码是我看完this API.
写的
*我直接在Windowscmd里打就可以运行tnc
命令了
我是不是漏掉了什么?或者还有其他更好的方法吗?如果是这样,请帮助我了解这里的问题。
提前致谢。
这里的问题是 python 脚本找不到 tnc
程序。该程序根本没有安装,或者---如果安装了---它不在 PATH 变量中。
尝试用 shell=True
调用 Popen
。这是您的代码的外观:
import subprocess
import sys
HOST = sys.argv[1]
PORT = sys.argv[2]
command = "tnc " + HOST + " -PORT "
print(command)
process = subprocess.Popen(command, stdout=tempFile, shell=True)
Here 是列出的问题。
tnc
是一个 PowerShell command。您需要像这样使用 PowerShell 显式 运行 它:
import subprocess
import sys
HOST = "127.0.0.1"
PORT = 445
command = "tnc " + HOST + " -PORT " + str(PORT)
print(command)
subprocess.call(["powershell.exe",command],stdout=sys.stdout)
输出:
tnc 127.0.0.1 -PORT 445
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 445
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
我是 Python 的套接字编程新手。我在Python 3.7中写了下面的代码:
trialSocketList.py
import subprocess
import sys
HOST = sys.argv[1]
PORT = sys.argv[2]
command = "tnc " + HOST + " -PORT "
print(command)
subprocess.call(command + PORT)
我在 Windows CMD 中传递以下内容:
python trialSocketList.py "127.0.0.1" 445
但是我在执行上面的代码时出现了以下错误:
tnc 127.0.0.1 -PORT
Traceback (most recent call last):
File "trialSocketList.py", line 14, in <module>
subprocess.call(command + PORT)
File "C:\Python37\lib\subprocess.py", line 323, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python37\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Python37\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
当我在同一代码中尝试使用 netstat -an
而不是命令 tnc 127.0.0.1 -PORT
时,代码运行完美。以上几行代码是我看完this API.
*我直接在Windowscmd里打就可以运行tnc
命令了
我是不是漏掉了什么?或者还有其他更好的方法吗?如果是这样,请帮助我了解这里的问题。
提前致谢。
这里的问题是 python 脚本找不到 tnc
程序。该程序根本没有安装,或者---如果安装了---它不在 PATH 变量中。
尝试用 shell=True
调用 Popen
。这是您的代码的外观:
import subprocess
import sys
HOST = sys.argv[1]
PORT = sys.argv[2]
command = "tnc " + HOST + " -PORT "
print(command)
process = subprocess.Popen(command, stdout=tempFile, shell=True)
Here 是列出的问题。
tnc
是一个 PowerShell command。您需要像这样使用 PowerShell 显式 运行 它:
import subprocess
import sys
HOST = "127.0.0.1"
PORT = 445
command = "tnc " + HOST + " -PORT " + str(PORT)
print(command)
subprocess.call(["powershell.exe",command],stdout=sys.stdout)
输出:
tnc 127.0.0.1 -PORT 445
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 445
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True