【发布时间】:2017-04-17 06:18:05
【问题描述】:
我有一个多线程程序,它实例化 5 个套接字对象,如下所示:
class myThread (threading.Thread):
def __init__(self, pid, port_num, restart):
threading.Thread.__init__(self)
self.hostname = '127.0.0.1'
self.pid = pid
self.port_num = port_num
self.ID = pid
self.restart = restart
self.delay = pid*4*1000
def run(self):
try:
s = timer(self.hostname, self.port_num, self.pid)
#print "Socket S run"+str(s)
sendToSocket(self.pid, s, self.t, self.ID)
except Exception as e:
raise
这里使用timer函数来实例化一个线程,方式如下:
def timer(host, port, pid):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
timed = pid * 4 * 100
s.settimeout(timed)
s.bind((host, port))
s.listen(5)
return s
我想终止特定端口上的一个套接字,比如 5005。 上例中的 pid 从 5001 变为 5005。
我想在两者之间关闭一个套接字 - 比如 5005。
所以我用了这个方法:
s = socket.socket()
s.connect(('127.0.0.1', 5005))
s.close()
但是 Socket 没有关闭。
我需要从外部函数调用上述过程。
简而言之,如果有一个套接字绑定到端口 5005,我想关闭该套接字并使其不可用,以便我们得到一个Port not found exception.
【问题讨论】:
-
当你的
class myThread持有.port_num时,myThread_instance.s.close()不起作用吗?
标签: python multithreading python-2.7 sockets