简单聊天室<二>



#功能添加

上文算是个功能完善的聊天服务器, 但是拓展功能有限. 而且不能解释命令, 因此需要增加对与身份和命令解释的支持, 而且还要确保按照每个会话的状态采取适当的行为.

###基础命令解释

比如, 输入say, hello world , 程序应当执行do_say("hello world").

class CommandHandler:
    def unkown(self, session, cmd):
        session.push("unkown commad %s\r\n" %cmd)
    def handle(self, session, line):
        if not line.strip():
            return
        parts = line.split('', 1)
        cmd = parts[0]
        try: line = parts[1].strip()
        except IndexError line = ''
        meth = getattr(self, 'do_' + cmd, None)
        try:
            meth(session, line)
        except TypeError:
            self.unkown(session, cmd)


阅读全文 »


简单聊天室<一>



#背景

互联网上在线聊天服务的种类很多, 如IRC, 在Python中实现这样一个方法, 可以使用Twisted框架.

自己写一个的原因:

学习网络编程基本的知识
看书笔记总结

聊天服务器基本的功能如下:

  • 服务器能接受不同客户端的连接
  • 允许用户并行操作
  • 能够解释命令, 如在shell中的操作

阅读全文 »


网络编程笔记



#socket 模块 在网络编程中的一个基本组件就是套接字(socket).套接字主要是两个程序之间的”信息通道”

套接字包括:服务器套接字和客户机套接字, 创建一个服务器套接字后, 就让他等待连接, 这样他就在某个网络地址处(IP地址和一个端口号的组合)监听.

一个套接字就是一个socket模块中的socket类的实例. 他的实例化需要3个参数:

地址族(默认是socket.AF_INET)
流套接字(默认是socket.SOCK_STREAM)或数据报套接字
使用的协议(默认是0)

阅读全文 »


快速排序--python



快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。

该方法的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

其中Partion算法是算法的核心,可以从左右两端同时开始,这样快一些,示例图如下:

阅读全文 »


Python 查询单词脚本



读文档老时网页查单词,有点费时,就自己写了一个脚本,用的是网易的有道词典查询,还不错!

阅读全文 »