我有这个密码。它不是整个代码,因为它是一个混合插件,有许多与套接字无关的行,所以我只给出处理套接字的部分,我把它与程序的其余部分隔离开来。在
如果你想看到整个代码,可以在这里找到
def create_thread():
global threadSocket,listening
threadSocket = threading.Thread(name='threadSocket', target= socket_listen)
listening = True
create_socket_connection()
threadSocket.start()
def socket_listen():
global receivedSocket,listening, receivedData,socketServer, socketMessages, pherror
socketServer.listen(5)
while listening:
(receivedSocket , adreess) = socketServer.accept()
receivedData = (receivedSocket.recv(1024)).decode("utf-8")[:-2]
socketMessages.append(receivedData)
receivedSocket.sendall('Hello from Blender!\n')
receivedSocket.close()
def create_socket_connection():
global socketServer
socketServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketServer.bind(('127.0.0.1',4000))
我用telnet测试了telnet 127.0.0.1 4000的套接字,telnet可以发送数据,但从不接收任何数据。如您所见,我的套接字在它自己的线程内阻塞,因此它不会阻止整个程序的执行。我假设sendall尝试发送所有内容,但由于某些原因它无法连接回telnet进行发送。我是不是做错了什么?在
下一行将引发错误,因为没有根据给定代码定义
socketMessages
。在上述行中的异常将阻止执行下一行(
sendall
)。在要解决这个问题,请将
socketMessages
定义为一个列表或删除上面的行。在看到OP的评论后更新:
^{} 接受字节字符串(python2.x中的
^{pr2}$str
,python3.x中的bytes
)。在Python3.x中,应该使用如下所示的bytes literal。在相关问题 更多 >
编程相关推荐