展示 ChatServer
下面就是 ChatServer 的用法。我们将展示 ChatServer 的输出结果(请参阅清单 22 )以及两个客户机之间的对话(请参阅清单 23 和 清单 24)。用户输入的文本以黑体形式表示。
清单 22. ChatServer 的输出
[plato]$ Python pchatsrvr.py
ChatServer started on port 2626
Client joined 127.0.0.1:37993
Client joined 127.0.0.1:37994
[127.0.0.1:37994] Hello, is anyone there?
[127.0.0.1:37993] Yes, I'm here.
[127.0.0.1:37993] Client left 127.0.0.1:37993
清单 23. 聊天客户机 #1 的输出
[plato]$ telnet localhost 2626
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
You're connected to the Python chatserver
Client joined 127.0.0.1:37994
[127.0.0.1:37994] Hello, is anyone there?
Yes, I'm here.
^]
telnet> close
Connection closed.
[plato]$
清单 24. 聊天客户机 #2 的输出
[plato]$ telnet localhost 2626
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
You're connected to the Python chatserver
Hello, is anyone there?
[127.0.0.1:37993] Yes, I'm here.
[127.0.0.1:37993] Client left 127.0.0.1:37993
正如您在清单 22 中看到的那样,所有客户机之间的对话都会显示到 stdout 上,包括客户机的连接和断开消息。
高级网络类
网络模块
Python包括几个专门用于应用层协议的模块(它们是在标准的 socket模块上构建的)。可用模块有很多,提供了超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、Internet 消息访问协议(IMAP)、邮局协议(POP3)、网络新闻传输协议(NNTP)、XML-PRC(远程过程调用)、FTP 以及很多其他的协议。
本节将展示表 4 中列出的模块的用法。
表 4. 有用的应用层协议模块
模块
所实现的协议
httplib
HTTP 客户机
smtplib
SMTP 客户机
poplib
POP3 客户机