网络编程
0.网络架构
(1)单级架构:office,俄罗斯方块
(2)C/S架构:应用软件
C:客户端:用户安装的软件;
S:服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务逻辑
(3)B/S架构:网页端游戏
统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理
1.简述网络
2.socket编程
什么是socket?socket被叫做套接字(ip地址+端口号),socket是应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现在网络中通信;
1.socket:TCP编程
##########
# 服务器端#
##########
import socket
# 1、创建服务器
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP称为流式协议,UDP称为数据报协议SOCK_DGRAM
# 2、绑定服务器套接字
phone.bind(('127.0.0.1', 8000)) # 127.0.0.1为本机环回地址,用来进行本机通信
# 3、半连接池,用来限制请求数量
phone.listen(5)
# 4、等待客户端连接
print("start....")
conn, client_addr = phone.accept() # 三次握手的双向连接
while True:
# 5、通信
data = conn.recv(1024)
if len(data)==0:continue
print("来自客户端的数据", data)
conn.send(data.upper())
# 6、关闭连接
conn.close()
# 7、关机
phone.close()
#########
# 客户端1#
#########
import socket
#1、创建客户端
phone=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#2、连接服务端,指定服务端的ip和端口
phone.connect(('127.0.0.1',8000))
#3、通信
while True:
msg=input('请输入你想要发给服务器的数据>>>>').strip()
# if len(msg)==0:continue
phone.send(msg.encode('utf8'))
data=phone.recv(1024)
print("来自服务器的数据",data)
#4.关闭
phone.close()
#########
# 客户端2#
#########
import socket
#1、创建客户端
phone=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#2、连接服务端,指定服务端的ip和端口
phone.connect(('127.0.0.1',8000))
#3、通信
while True:
msg=input('请输入你想要发给服务器的数据>>>>').strip()
# if len(msg)==0:continue
phone.send(msg.encode('utf8'))
data=phone.recv(1024)
print("来自服务器的数据",data)
#4.关闭
phone.close()
2.UDP编程
##########
# 服务器端#
##########
import socket
#1、创建服务端
server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#2、绑定端口号
server.bind(('127.0.0.1',8001))
#3、通信
while True:
data,client_addr=server.recvfrom(1024)
print("来自客户端的数据",data,client_addr)
server.sendto(data.upper(),client_addr)
#4、关闭
server.close()
########
# 客户端#
########
import socket
#创建客户端
client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#通信
while True:
msg=input("请输入你想发给客户端的内容>>>>").strip()
client.sendto(msg.encode("utf8"),('127.0.0.1',8001))
data,sever_addr=client.recvfrom(1024)
print(data)
#关闭
client.close()
TCP和UDP的差别在于:UDP相对于TCP来说服务端少了accept监听,客户端少了connect,即UDP没有建立连接的过程