在 Redhawk 中查找带有 python 组件的空闲端口

Finding a free port with a python component in Redhawk

我目前正在进行的项目需要我编辑配置文件以替换旧的标准端口号(如果正在使用该端口)。我目前使用的代码如下:

import os
import sys
import socket
import select
import tempfile
import subprocess
import threading
import Queue
import time
import fileinput

...

def find_open_port():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("",0))
s.listen(1)
tempport = s.getsocketname()[1]
s.close()
return tempport

当我从我的 Ubuntu 机器 (Python 2.7.6) 运行它时,它运行良好,但在我的 Redhawk 组件中运行的 CentOS 6 虚拟机上,我得到以下信息:

AttributeError: '_socketobject' 对象没有属性 'getsocketname'

不太确定为什么会出现此错误。 Python 在Redhawk 运行的是2.6 我想说什么? 关于为什么会发生这种情况以及如何解决的任何线索?

您的代码调用了 getsockname 方法,但您的错误是 getsocketname,您确定在将其写入 Redhawk 时复制正确吗?