这个python 代码总是执行到那行就不行了?该怎么解决
这个python 代码总是执行到那行就不行了?
下面的代码总是执行到: def unknown(self, session, cmd): 这行就不行了
无论我在前面加上import cmd 也是不行
请大家帮我看看下面的有哪些问题?谢谢了
from asyncore import dispatcher
from asynchat import async_chat
import socket, asyncore
PORT = 5005
NAME = 'TestChat'
class EndSession(Exception): pass
class CommandHandler:
"""
类似于标准库中的cmd.Cmd的简单命令处理程序
"""
def unknown(self, session, cmd):
'响应未知命令'
session.push('Unknown command: %s\r\n' % cmd)
def handle(self, session, line):
'处理从给定的会话中收到的行'
if not line.strip():return
#分离命令
parts = line.split('',1)
cmd = parts[0]
try: line = parts[0].strip()
except IndexError: line = ''
#试着查找处理程序
meth = getattr(self, 'do'+cmd.None)
try:
#假定它是可以调用的
meth(session, line)
except TypeError:
#如果不可以调用,此代码响应不知的命令
self.unknown(session, cmd)
class Room(CommandHandler):
"""
包括一个或多个用户的fa型环境,它负责基本的命令处理或广播
"""
def __init__(self, server):
self.server = server
self.sessions = []
def add(self, session):
'一个会话(用户)进入房间'
self.sessions.append(session)
def remove(self, session):
'一个会话(用户)已离开房间'
self.sessions.remove(session)
def broadcast(self, line):
'向房间中的所有会话发送一行'
for session in self.sessions
session.push(line)
def do_logout(self, session, liine):
'响应logout命令'
raise EndSession
class LoginRoom(Room):
"""
为刚刚链接上的用户准备房间
"""
def add(self, session):
Room.add(self, session)
#当用户进入时,问候他或她:
self.broadcast('Welcome to %s\r\n' % self.server.name)
def unknown(self, session, cmd):
# 所有未知命令(除了login或者logout外的一切)
#会导至一个警告:
session.push('Please log in\nUse "login <nick>"\r\n')
def do_login(self, session, line):
name = line.strip()
#确保用户输入了名字
if not name:
session.push('please enter a name\r\n')
#确保用户名没有被使用
elif name in self.server.users:
session.push('The name "%s" is taken.\r\n' % name)
session.push('Please try again.\r\n')
else:
#名字没有问题,所以存储在会话中,并且将用户移动到主聊天室
session.name = name
session.enter(self.server.main_room)
class ChatRoom(Room):
"""
为多用户聊天准备的房间
"""
def add(self, session):
#告诉所有人有新用户进入了房间
self.broadcast(session.name + 'has entered the room.\r\n'):
self.server.users[session.name] = session
Room.add(self, session)
def remove(self, session):
Room.remove(self, session)
#告诉所有人有用户离开
self.broadcast(session.name + 'has left the room.\r\n')
def do_say(self, session, line):
self.broadcast(session.name + ': ' + line+'\r\n')
def do_look(self, session, line):
'处理look命令.该命令用于查看谁在房间内'
session.push('The following are in this room:\r\n')
for other in self.sessions:
session.push(other.name + '\r\n')
def do_who(self, session, line):
'处理who命令,该命令用于查看谁登陆了'
session.push('The following are logged in "\r\n')
下面的代码总是执行到: def unknown(self, session, cmd): 这行就不行了
无论我在前面加上import cmd 也是不行
请大家帮我看看下面的有哪些问题?谢谢了
from asyncore import dispatcher
from asynchat import async_chat
import socket, asyncore
PORT = 5005
NAME = 'TestChat'
class EndSession(Exception): pass
class CommandHandler:
"""
类似于标准库中的cmd.Cmd的简单命令处理程序
"""
def unknown(self, session, cmd):
'响应未知命令'
session.push('Unknown command: %s\r\n' % cmd)
def handle(self, session, line):
'处理从给定的会话中收到的行'
if not line.strip():return
#分离命令
parts = line.split('',1)
cmd = parts[0]
try: line = parts[0].strip()
except IndexError: line = ''
#试着查找处理程序
meth = getattr(self, 'do'+cmd.None)
try:
#假定它是可以调用的
meth(session, line)
except TypeError:
#如果不可以调用,此代码响应不知的命令
self.unknown(session, cmd)
class Room(CommandHandler):
"""
包括一个或多个用户的fa型环境,它负责基本的命令处理或广播
"""
def __init__(self, server):
self.server = server
self.sessions = []
def add(self, session):
'一个会话(用户)进入房间'
self.sessions.append(session)
def remove(self, session):
'一个会话(用户)已离开房间'
self.sessions.remove(session)
def broadcast(self, line):
'向房间中的所有会话发送一行'
for session in self.sessions
session.push(line)
def do_logout(self, session, liine):
'响应logout命令'
raise EndSession
class LoginRoom(Room):
"""
为刚刚链接上的用户准备房间
"""
def add(self, session):
Room.add(self, session)
#当用户进入时,问候他或她:
self.broadcast('Welcome to %s\r\n' % self.server.name)
def unknown(self, session, cmd):
# 所有未知命令(除了login或者logout外的一切)
#会导至一个警告:
session.push('Please log in\nUse "login <nick>"\r\n')
def do_login(self, session, line):
name = line.strip()
#确保用户输入了名字
if not name:
session.push('please enter a name\r\n')
#确保用户名没有被使用
elif name in self.server.users:
session.push('The name "%s" is taken.\r\n' % name)
session.push('Please try again.\r\n')
else:
#名字没有问题,所以存储在会话中,并且将用户移动到主聊天室
session.name = name
session.enter(self.server.main_room)
class ChatRoom(Room):
"""
为多用户聊天准备的房间
"""
def add(self, session):
#告诉所有人有新用户进入了房间
self.broadcast(session.name + 'has entered the room.\r\n'):
self.server.users[session.name] = session
Room.add(self, session)
def remove(self, session):
Room.remove(self, session)
#告诉所有人有用户离开
self.broadcast(session.name + 'has left the room.\r\n')
def do_say(self, session, line):
self.broadcast(session.name + ': ' + line+'\r\n')
def do_look(self, session, line):
'处理look命令.该命令用于查看谁在房间内'
session.push('The following are in this room:\r\n')
for other in self.sessions:
session.push(other.name + '\r\n')
def do_who(self, session, line):
'处理who命令,该命令用于查看谁登陆了'
session.push('The following are logged in "\r\n')