Python网络编程

网络编程

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没有建立连接的过程

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值