python网络编程学习(一)模拟TCP

最近刚开始学习python网络编程,想借此整理回顾之前所学,嘻嘻

网络编程的三要素:

  1. ip地址:即主机地址,这是计算机的唯一标识,通过IP地址来找到指定的计算机
  2. 端口:用于表示进程的逻辑地址,通过端口来找到指定的进程
  3. 协议:定义通信规则,只有符合协议才可以通信

TCP/IP模型

TCP/IP:TCP/IP 协议是 Internet 最基本的协议
参考上图,这里主要采用TCP/IP的4层模型,TCP/IP是 Internet 最基本的协议,共由传输层的TCP协议和网络层的IP协议组成。
通俗来说,TCP协议负责发现传输层的传输问题,一有问题就发出信号,并要求重新传输,直到所有数据安全正确传输到目的地。IP协议(位于网络层)负责传输层和网络接口层的数据包传递。

TCP协议的三次握手

举个栗子: ①飞行员:02 02 听到请回答?
②基地:01 01 收到收到 请说(此时二者同步在线)
③通信。(必须要连接)
TCP在通信需要2个角色:服务器端,客户端,两者可以互相传递数据

python模拟TCP通信–服务器端

服务器端的实现5个步骤及使用使用的方法:
① 使用socket类创建对象
②绑定地址 bind() (用来定义服务器端的地址)
③监听客户端 listen() (第一次握手)
④被动接收客户端连接 accept() (第二次握手)
⑤发送或接收数据 send(),recv()(第三次握手)

上代码!
需要注意的是
1. socket能实现不同主机之间的进程通信,网络上大多数服务都是基于socket来完成通信的,python中的 socket类用来处理用户的请求和相应。
gethostname()这个方法是用来获取本地ip地址,由于是在同一台电脑模拟的,所以服务器和客户端的ip地址是相同,只有端口号不同

# 1.请仔细再查看关于socket类的构造方法、常用函数,
# 同时再自行使用socket来模拟服务器和客户端进行模拟通信。(类似于课堂案例)

# 模拟服务器端
from socket import *
#1 创建对象 
soc = socket()  #无参数时默认SOCK_STREAM即 采用TCP协议
#2 绑定地址(服务器端的地址)
addr= (gethostname(),1001)  #1001为端口号
soc.bind(addr)

# 3 #监听 等待连接
soc.listen(5)

# 4 等待客户端连接
#accept连接成功时返回一个socket对象  一定要用这个返回对象来进行接收数据操作
soc_obj=soc.accept()

# 5 发送数据
#发送数据或接收数据时 注意一定要是下标0 即socket对象来调用
#若未用这个下标0,那么客户端会收不到数据
# soc_obj[0].send(b"hello lala")
# soc_obj[0].close()  #发送完数据后关闭服务器,只有在发送数据的时候才能用

# 或接收数据
data = soc_obj[0].recv(1024) #1024为接收的数据长度 自定义的 可更改
print(data)

python 模拟客户端

客户端模拟的3个步骤及方法:
①创建对象
②连接服务器端
③收发数据

#模拟客户端
from socket import *
#1  创建对象  TCP 流模式
soc= socket(AF_INET,SOCK_STREAM)

#2 连接服务器端
addr = (gethostname(),1001) #地址为服务器端的地址
soc.connect(addr)

#3 接收数据
# data = soc.recv(1024)
# print(data)

#发送数据
soc.send(b'66666666666')  #b表示将后面的字符串转化 数据类型为byte类

最后结尾处,如果各位读者发现不足之处,还请不吝提出,哈哈,相互学习学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值