网络编程
desc ip 目标地址 | src ip 源地址 |
---|---|
desc port 目标端口 | src port 源端口 |
upd和tcp两种方式
IP地址
用来标记网络上唯一的电脑,不能相同 ,寻找目标电脑的标记
- linux查看 ip ifconfig
- windows查看 ip ipconfig
网络号和主机号
端口号(重点)
- 端口有是用端口号来标记的,范围0-65535
- 知名端口 0-1023 常用的端口号
- 动态端口 不常用端口,下写代码的时候系统可能会随机分配
socket
- 简称套接字,实现不同主机进程之间的网络通信
tcp
import socket
socket_tcp = socket.socket(socket.AF_INET, socket.SOCKET_STREAM)
# 第一个参数是 ip 的版本 ipv4 ipv6 第二个参数是 tcp 或者 udp
socket_tcp.close()
udp
import socket
socket_udp = socket.socket(socket.INET, socket.SOCKET_DGRAM)
socket_udp.close()
- stream tcp
- dgram udp
udp 发送数据
import socket
udp_socket = socket.socket(AF_INET, SOCK_DGRAM)
ip_port = ("127.0.0.1', 9654) # 设置端口号和IP地址 IP要双引号 端口号不要
water = "hahahah"
# udp_socket.sendto(b"demo", ip_port)
udp_socket.sendto(water.encode("utf-8"), ip_port)
# encode 变成某种编码
# decode 解码
udp_socket.close()
udp 接收数据
import socket
udp_socket = socket.socket(AF_INET, SOCK_DGRAM)
# 绑定本地信息
local = ("", 5252)
udp_socket.bind(local) # 只能绑定自己的信息
# 3. 接收信息
receiv = udp_socket.recvfrom(1024) # 限制收到的大小
r1 = receiv[0] # 接收的数据
r2 = receiv[1] # 对方的信息
print(r1.decode("gbk"))
udp_socket.close()