看完网络编程的知识,觉得客户端和服务器之间消息传递太无聊了,于是调用了一个外部API和语音合成服务,只要在客户端输入任意内容,服务器返回一句诗并读给你听。
知识回顾
回顾《Python核心编程》第二章:网络编程的基础知识。
c/s架构
客户端/服务器架构,也称为c/s架构,即客户端发出请求,服务器接受请求并提供服务。举个例子,银行的柜员可以看作是服务器,而排队的客户则可以视为一个一个的客户端,柜员不断接受并处理来自客户的请求,然后将结果回复给客户。
c/s架构通常分为软件和硬件两种:
- 硬件:打印机、文件服务器
- 软件:web服务器
套接字
- 一种计算机网络数据结构,开始任何通信之前必须创建套接字
- 套接字家族(address family):AF_UNIX, AF_NETLINK, AF_TIPC, AF_INET(最常用)
- 主机-端口对:“区号-电话号码”,有效端口范围为0~65535
- 套接字类型:
- 面向连接:TCP(传输控制协议),SOCK_STREAM
- 无连接套接字:UDP(用户数据报协议),SOCK_DGRAM
实现步骤
实现的步骤较为简单,代码见github:https://github.com/swordspoet/ReadPoem
创建TCP服务器
1 | #!/usr/bin/env python |
创建TCP客户端
1 | #!/usr/bin/bin python |
调用诗词API接口
接口的地址是:https://api.apiopen.top/singlePoetry,直接访问便可返回json字段的诗词信息,如:
1 | {"code":200,"message":"成功!","result":{"author":"白居易","origin":"空闺怨","category":"古诗文-抒情-闺怨","content":"秋霜欲下手先知,灯底裁缝剪刀冷。"}} |
1 | #!/usr/bin/env python |
诗词转换为MP3文件
文本转为语音,即TTS,bat公司都有开放的语音合成服务,因为之前用过阿里的,所以直接调用(引用了https://pypi.org/project/aliyun-voice/1.0.2/)。
1 | #!/usr/bin/env python |
调用播放器播放MP3文件
经过文字转语音,还需要调用播放器来播放MP3文件。
1 | import subprocess |