使用 Python 进行 socket 编程(6)

展示 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 客户机

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwgggx.html