#网络编程:通过网络让不同的计算机上运行的程序可以进行通信
#软件开发架构
#分为 应用类程序(qq) ,,web类程序(浏览器)
#C/S架构 :Client (客户端)与 Server(服务端架构)
#B/S架构:Browser (浏览器端)与 Server(服务端架构)
#每台电脑在网络世界中都有一个全球唯一的表示——ip地址
#物理地址 通常由12位16进制数表示(前6位厂编,后6位流水线号)
#ip地址的范围:0.0.0.0–255.255.255.255(四段十进制数)
#ARP:地址解析协议。根据IP地址获取物理地址的一个TCP/IP协议。
#电脑上的每一个应用程序想运行必须占一个端口号,
#并且端口号同时间只能被一个应用程序占用。
#每一台电脑上一共有65536个端口,端口的范围是0~65535。
#一般0~1023被一些其他应用已经占用,因此我们一般从1024开始指定端口。
#网络协议就是为了能让计算机网络中进行数据交换而建立的规则,标准。
#根据TCP/IP 协议族抽象成4层,应用层,传输层,网络层,数据链路层。
#为了在传输的过程中保证数据不丢失,需要在每层加上一些额外的内容。
#应用层 应用层
#传输层 (选择通信协议) 传输层
#网络层 (加上一个ip信息) 网络层
#数据链路层(mac地址) 数据链路层
#物理层(网卡,网线)—————————物理层
#TCP协议特点:数据安全,速度略低。
#TCP协议的三次握手,四次挥手。
#第一次握手:是客户端让服务器准备好资源。
#第二次握手:服务端资源准备好了并且服务端问客户端资源有没有准备好。
#第三次握手:客户端资源也准备好了。接下来才真正的发生数据。
#第一次挥手:客户端告诉服务端我不会给你发数据了。
#第二次挥手:服务端告诉客户端我收到你发生的信息了。
#第三次挥手:服务端给客户端发生数据说我也不给你发了。
#第四次挥手:客户端给服务端说我知道了。
#UDP协议:面向无连接,速度快。(视频传输)
#OSI模型(七层)
#1,应用层 2,表示层 3,回话层 4,传输层 5,网络层 6,数据链路层 7,物理层
#Socket概念
#Socket层:套接字。
#server(服务器端)
import socket
server=socket.socket(type=socket.SOCK_DGRAM)#创建一个服务器socket对象
server.bind(('10.10.42.249',9000))#监听本机9000端口 自己的ip地址
while True:
#接收从客户端发过来的信息
msg,addr=server.recvfrom(1024)#信息 IP地址
msg=msg.decode('utf-8')
print('客户端',msg)
content=input(':')#内容
content=content.encode('utf-8')
#向客户端发送消息
server.sendto(content,addr)#b 转化为二进制 值
#关闭套接字
server.close()
#client(客户端)
import socket#套接字
client=socket.socket(type=socket.SOCK_DGRAM)
ip_port=('10.10.42.249',9000)#服务器地址和端口
while True:
content=input(':')#将 向服务器发送的信息 改为输出
content=content.encode('utf-8')#修改信息的编码
client.sendto(content,ip_port)#向服务器发送一条信息
msg,addr=client.recvfrom(1024)#接收从服务器返回的一条信息
msg=msg.decode('utf-8')
print('服务端',msg)