我想尝试一些东西,但它不起作用。我想要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
答案 0 :(得分:1)
尝试类似
的内容while client.sock is None:
time.sleep(0.0001)
client.sock.sendall(data)
你最好使用Queue
。