一、网络-udp
1.1 ip地址
注意:
IP地址127.0.0.1 ~ 127.255.255.255 用于回路测试
1.2 端口(重点)
- 端口是通过端口号来标记的,端口号只有整数,范围是从0~65535(2^16)
- 知名端口:(0~1023)(>1024的随便用)
- 80端口 分配给 HTTP 服务
- 21端口 分配给 ftp 服务
- 动态端口(1024~65535)
1.3 socket简介
1.31 不同电脑上进程之间如何通信
- 利用 ip地址、协议、端口 就可以标识网络的进程了。
- 进程间通信:运行的程序之间的数据共享。
1.32 创建socket
在Python中 使用socket 模块的函数 socket就可以完成:、
import socket
# AddressFamily: ipv4/ipv6; Type: udp/tcp
socket.socket(AddressFamily, Type)
说明:
函数 socket.socket 创建一个 socket,该函数带有两个参数:
-
Address Family:可以选择 AF_INET (用于Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作常用 AF_INET
-
Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于TCP协议)或者 SOCK_DGRAM(数据报套接字,主要用于UDP协议)
创建一个 tcp socket (tcp套接字)
import socket
# AddressFamily: ipv4/ipv6; Type: udp/tcp
# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ... 这里是使用套接字的功能 (省略)
# 不用的时候,关闭套接字
s.close()
创建一个 udp socket (udp 套接字)
import socket
# AddressFamily: ipv4/ipv6; Type: udp/tcp
# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# ... 这里是使用套接字的功能 (省略)
# 不用的时候,关闭套接字
s.close()
说明
- 套接字使用流程
- 创建套接字
- 使用套接字收/发数据
- 关闭套接字
1.4 udp网络程序-发送、接收数据
1.41 udp网络程序-发送程序
import socket
# AddressFamily: ipv4/ipv6; Type: udp/tcp
# 1. 创建udp的套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 准备接收方地址
# '192.168.43.74' 表示目标ip地址
# 8080表示目的端口
dest_addr = ('192.168.43.74', 8080) # 注意 是元组,ip是字符串,端口是数字
# 3. 从键盘获取数据
send_data = input("请输入要发送的数据:")
# 4. 发送数据到指定的电脑上的指定程序中
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
# 不用的时候,关闭套接字
udp_socket.close()
注意:可以用NetAssist测试