通过套接字python,线程发送

时间:2014-03-13 22:38:08

标签: python multithreading sockets

我想尝试一些东西,但它不起作用。我想要make客户端套接字线程,然后在我打电话的时候随时发送一些消息。我希望通过命令client.sock.sendall(data)执行此操作,但它不起作用。为什么?首先我调用了我的客户端实例,然后是socket,然后命令发送数据..我的客户端线程应该存在,所以我可以随时给他打电话..对吗?

这是我的客户代码:

 import threading
 import socket
 import pickle

 def main():

      class Chat_Client(threading.Thread):
            def __init__(self):
                threading.Thread.__init__(self)
                self.host = '127.0.0.1'
                self.sock = None
                self.running = 1
            def run(self):
                PORT = 1234
                self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                self.sock.connect((self.host, PORT))

            def kill(self):
                self.running = 0

      client=Chat_Client()
      client.start()

      pole=['majo','jojo', 'surovec']
      data = pickle.dumps(pole)
      client.sock.sendall(data)

      client.kill()

 if __name__ == "__main__":
      main()

这是错误信息:

    client.sock.sendall(data)
    AttributeError: 'NoneType' object has no attribute 'sendall'

是否存在某种方式,如何制作?我是初学者,我正在尝试学习python ..

最好的问候

的Jozef

1 个答案:

答案 0 :(得分:1)

尝试类似

的内容
while client.sock is None:
  time.sleep(0.0001)

client.sock.sendall(data)

你最好使用Queue