我有一个客户端线程,它将ping服务器的一个状态属性:
def run ( self ):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost',2727))
print 'client #', self.name , 'polling'
x = client.recv(1024)
client.close()
print x
我的服务器运行一个循环来获取它的状态,并为套接字生成一个线程:
while True:
deviceState = self.getDeviceState()
channel, details = self.server.accept()
sThread.ServerThread(channel, details, deviceState).start()
问题是,在我更新deviceState和客户端ping之后,无论我等待多久,它都会首先获得旧状态(可能来自现有的ServerThread)。然后当客户端再次ping时,它可以获取新状态。如果更新了deviceState,是否有办法关闭ServerThread,并确保客户端套接字获得一个新的服务器线程?
答案 0 :(得分:0)
sThread.ServerThread()
是你的功能,对吧?
在获取设备状态并将其作为参数传递给ServerThread()
之后,让ServerThread()
的实现在请求进入后获取.getDeviceState()
以获取最新设备状态。
现在设置它的方式现在返回设备状态,因为它是创建线程时的 ,而不是请求进入时的设备状态。