目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
任务9.3  Socket编程实例

UDP应用场景

#成语大师  

#服务器端程序     MM05Server.py

import socket

QY={"语重心长":"成语解释  重:郑重。恳切话说得诚恳;有分量;心意深长。成语例子 他这些语重心长的话,深深地打劫了我的心。英语翻译  talk in earnest。",

    "敬老爱幼":"成语解释  尊敬老人,爱护小孩。英语翻译 respect the aged and cherish the young。",

    "百尺竿头":"解释:不满足于已有成就,继续努力,以取得更好的成绩。",

    "愚公移山":"比喻坚持不懈地改造自然和坚定不移地进行。"}

host = socket.gethostname() # 获取主机地址

port = 12345                # 设置端口号

print('准备  网络连接  绑定。。。 ')

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建TCP/IP套接字

s.bind((host,port)) # 绑定地址(host,port)到套接字

s.listen(1) # 设置最多数量

sock,addr = s.accept() # 被动接受TCP客户端连接

print('连接已经建立') 

info = sock.recv(1024).decode() # 接收客户端数据

while info != 'byebye':  # 判断是否退出

  key=info

  if info :

    print('接收到的内容:'+info)

    print('华夏学院欢迎您! ')

  try:

    ss=QY[key] 

    send_data ="《成语大师》为你服务 \n "+ss       # 发送消息

    sock.send(send_data.encode()) # 发送TCP数据

  except Exception as e:

    print('\n',e)

    send_data ="请谅!成语大师库没有存放此成语,请你为大师水平提升也出出力吧!\n "      # 发送消息

    sock.send(send_data.encode()) # 发送TCP数据

  if send_data in ('byebye',"quit","exit"):  # 如果发送exit,则退出

    break

  info = sock.recv(1024).decode() # 接收客户端数据

sock.close() # 关闭客户端套接字

s.close()    # 关闭服务器端套接字

print('谢谢使用!欢迎你下次继续使用《成语大师》! ')



#客户端程序     MM05Client.py

import socket       # 导入socket模块

s= socket.socket()  # 创建TCP/IP套接字

host = socket.gethostname() # 获取主机地址

port = 12345        # 设置端口号     

s.connect((host,port)) # 主动初始化TCP服务器连接

print('已连接    byebye--quit ')

print("《成语大师》 为你服务!\n")

print("输入成语(如:语重心长,百尺竿头,敬老爱幼),《成语大师》为你解惑。\n")

info = ''           

while info != 'byebye':  # 判断是否退出

  send_data=input('输入发送的成语: ')    # 输入内容

  s.send(send_data.encode()) # 发送TCP数据

  if send_data in ('byebye',"quit","exit"): # 判断是否退出

    break

  info = s.recv(1024).decode() # 接收服务器端数据

  print('接收到的内容: \n '+info)

s.close() # 关闭套接字






应用场景

语音广播、视频、聊天软件、TFTP(简单文件传送)、SNMP(简单网络管理协议)、RIP(路由信息协议,如报告股票市场、航空信息)、DNS(域名解释)

(一)文件传输协议FTP应用

1.  ftplib模块

在Python系统中默认安装的ftplib模块中定义了FTP类,应用ftplib模块中的FTP类,可以很方便地编写ftp客户端,用于上传或下载文件。

 2. FTP类的常用方法

【例3】设在FTP服务器(IP为129.168.1.1,端口号为21)上有目录test,该目录下有文件hello.c。编写一个FTP客户端程序,将FTP服务器上的hello.c文件下载到客户机的pytest目录下。

编写程序代码如下:

from ftplib import FTP  

ftp = FTP()   # 创建FTP对象

timeout = 30  # 设定传输超时的时间

port = 21     # 端口号

ip = '192.168.1.1'      # FTP服务器的IP地址

username = 'admin'      # 登录用户名

passwd = '123456'       # 用户密码

trFileName = 'hello.c'  # 设置要传输的文件

ftp.connect(ip,port, timeout) # 连接FTP服务器  

ftp.login(username, passwd)   # 用户登录服务器  

print(ftp.getwelcome())       # 获得欢迎信息   

ftp.cwd('/test')              # 设置FTP路径(FTP服务器)

ftp.dir()                     # 显示FTP路径目录下的文件

path = '/pytest/' + trFileName    # 文件保存路径(客户机)  

f = open(path,'wb')               # 打开要保存文件  

filename = 'RETR ' + trFileName   # 保存FTP文件 

ftp.retrbinary(filename, f.write) # 保存FTP上的文件  

print(filename)                   # 显示从FTP服务器下载的文件

ftp.quit()                  # 退出FTP服务器 

程序运行程序结果如下:

220 Welcome to Gxnn.com FTP Server!

-rwx------ 1 user group      251 Mar 13 13:28 hello.c

-rwx------ 1 user group    19521 Jul 24 22:23 hello.exe

-rwx------ 1 user group    4146 Jul 24 22:23 hello.o

RETR hello.c

(二)基于TCP协议的端口扫描器

【例4】编写一个简易的端口扫描器程序。

(三) 远程控制计算机

【例5】编写远程控制计算机操作的程序。

(四)网络域名解析

在Python中域名通常是一个字符串的形式。进行域名解析时,经常需要去掉字符串头尾的空格,这时,需要用到Python的strip()函数。

strip()函数的一般语法格式为:

     str.strip([chars])

其中,chars为移除字符串头尾指定的字符。

例如:

str = "*****this is string example....wow!!!*****"

print (str.strip( '*' ))

则输出结果为:

this is string example....wow!!!

当参数chars为空格时,strip()要写成无参函数。

当域名写成“http://xxxxx.xxxx.xxxxx”形式时,则需要使用字符串运算符[:]去除“http://”。

【例6】设文本文件urllist.txt中存放网站域名如下:

http://sdk.mobcent.com

http://www.baidu.com

编写一个域名解析程序,解析出对应的IP地址,并保存到文件iplist.txt中。


运行程序,其结果如下:

sdk.mobcent.com

103.235.239.10

www.baidu.com

119.75.216.20

complete !

 

此时,新生成的文件iplist.txt中,保存了解析的IP地址,其内容为:

103.235.239.10

119.75.216.20