一、UDP协议编程
编写UDP通信程序,发送端发送一个字符串“Hello world!”。接收端在计算机的5000端口进行接收,并显示接收内容,如果收到字符串bye(忽略大小写)则结束监听。
首先启动一个命令提示符环境并运行接收端程序,这时接收端程序处于阻塞状态,接下来再启动一个新的命令提示符环境并运行发送端程序,此时会看到接收端程序继续运行并显示接收到的内容以及发送端程序所在计算机IP地址和占用的端口号。
当发送端发送字符串bye后,接收端程序结束,此后再次运行发送端程序时接收端没有任何反应,但发送端程序也并不报错。这正是UDP协议的特点,即“尽最大努力传输”,并不保证非常好的服务质量。
import socket import sys s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 假设192.168.2.203是接收端机器的IP地址 s.sendto(sys.argv[1].encode() , ("192.168.2.203" ,5000)) s.close( )
import socket #使用IPV4协议,使用UDP协议传输数据 s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #绑定端口和端口号,空字符串表示本机任何可用IP地址 s.bind(('', 5000)) while True: data, addr = s.recvfrom(1024) # 显示接收到的内容 data = data.decode() print('received message:{0} from PORT {1[1]} on {1[0]}'.format(data, addr)) if data.lower() == 'bye': break s.close( )
运行效果截图:
二、获取一个网页内容
import requests def getHTMLText(_): try: r=requests.get(url,timeout=30) r.raise_for_status() r.encoding='utf-8' return r.text except: return "" url="http://www.baidu.com" print(getHTMLText(url))
运行结果: