客户端连接到旧服务器线程并检索过期数据?

时间:2011-02-11 20:24:06

标签: python multithreading

我有一个客户端线程,它将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,并确保客户端套接字获得一个新的服务器线程?

1 个答案:

答案 0 :(得分:0)

sThread.ServerThread()是你的功能,对吧?

在获取设备状态并将其作为参数传递给ServerThread()之后,让ServerThread()的实现在请求进入后获取.getDeviceState()以获取最新设备状态。

现在设置它的方式现在返回设备状态,因为它是创建线程时的 ,而不是请求进入时的设备状态。