ip地址
用来标记网络上的一台电脑
如何查看电脑的IP地址?
分Windows和Linux系统
Windows是ipconfigLinux是ifconfig
IP地址的分类
按版本分类
Ipv4:
IP协议的版本号是4目前在用,应用最广泛地址位数是32位(4个字节)地址有限,基本已消耗完毕
ipv6:
IP协议的版本号是6在试验当中,应用还不广泛地址位数是128位(16个字节)基本可以为每一粒沙子标记
按地址分类
A类B类C类,区别就是后面的主机号位数不一样
端口
每个软件运行的时候系统会自动分配端口,每一个重启的端口会变化
端口范围:0-65535
知名端口:0-1024(这是已经固定的,不会改变)
动态端口:1024-65535
TCP/IP协议
TCP/IP协议即是传输控制协议和因特网互联协议,是基于Internet最基本的协议,又名网络通讯协议,Internet互联网的基础,由网络层的IP协议和传输层的TCP协议组成。
一共有七层(现在一般说是四层):
如何创建套接字?
需要导入socket模块
socket(family=,type=)
family是协议族type 是套接字类型,一共有两种分别是tcp(流失套接字,SOCK_DGRAM),
udp(数据报套接字,SOCK_STREAM)
udp发送数据
步骤:
创建套接字
发送、接受数据
关闭套接字
import socketudp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)family 协议族 type 套接字类型 tcp 流失套接字 udp 数据报套接字# 发送数据/接受数据while True:send_data = input('输入你要发送的数据:')udp_socket.sendto(send_data.encode('gbk'), ('192.168.0.115', 8080))# encode 是编码# decode 是解码if send_data == 'exit':break# 关闭套接字udp_socket.close()
udp接受数据
步骤:
创建套接字
绑定信息
接受数据
打印数据
关闭套接字
import socketdef main():# 创建套接字udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)# 绑定信息bind_addr = ('', 7880)udp_socket.bind(bind_addr)# 接受数据recv_data = udp_socket.recvfrom(1024)print(recv_data) # 打印是一个元组(数据,发送方的地址)# 关闭套接字udp_docket.close()if __name__ == '__main__':main()
案例——udp版聊天器
import socketdef send_data(udp_socket):send = input('请输入需要发送的数据:')udp_socket.sendto(send.encode('gbk'), ('192.168.0.115', 7875))def recv_data(udp_socket):recv = udp_socket.recvfrom(1024)print("发送ip:%s发送内容:%s" % (recv[1], recv[0].decode('gbk')))def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)udp_socket.bind(("", 7875))while True:send_data(udp_socket)recv_data(udp_socket)if __name__ == '__main__':main()