本节内容:

  一、网络基础知识

  二、socket概念及相关语法

    2.1socket概念
    2.2socket解释
    2.3socket模块功能介绍
    2.4socket粘包问题
    2.5Socket多并发

 

 

一、网络基础知识

1、OSI七层模型(具体自己百度)

2、TCP/IP四层参考模型(具体自己百度)

 

python学习笔记08-- socket编程

他们的对应网络协议如下:协议

今天我们说的socket就在传输层:TCP/IP三次握手建立连接

python学习笔记08-- socket编程  python学习笔记08-- socket编程

 

客户/服务器架构

服务器是一个软件或硬件,用于提供客户需要的“服务”。服务器存在的唯一目的就是等待客户的请求,给这些客户服务,然后再等待其它的请求。另一方面,客户连上一个(预先已知的)服务器,提出自己的请求, 发送必要的数据,然后就等待服务器的完成请求或说明失败原因的反馈。服务器不停地处理外来的请求,而客户一次只能提出一个服务的请求,等待结果。然后结束这个事务。客户之后也可以再提出其它的请求,只是,这个请求会被视为另一个不同的事务了。

 

二、socket概念及相关语法

socket是TCP/IP中传输层中TCP、UDP的实现方式,用socket编程,可以实现TCP UDP的通信。有一个比较好的比喻方式:socket就是一条管子,连接两段,而TCP、UDP就是管子中的东西

2.1socket概念

socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递。 我们知道网络 通信 都 是基于 ip+port 方能定位到目标的具体机器上的具体服务,操作系统有0-65535个端口,每个端口都可以独立对外提供服务,如果 把一个公司比做一台电脑 ,那公司的总机号码就相当于ip地址, 每个员工的分机号就相当于端口, 你想找公司某个人,必须 先打电话到总机,然后再转分机 。

建立一个socket必须至少有2端, 一个服务端,一个客户端, 服务端被动等待并接收请求,客户端主动发起请求, 连接建立之后,双方可以互发数据

来看个socket的传递模式:

python学习笔记08-- socket编程

 

2.2socket解释

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

socket和file的区别:

  • file模块是针对某个指定文件进行【打开】【读写】【关闭】
  • socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】

 

我们来看一个简单的socket通信程序:

 1 #服务器端
 2 
 3 import socket
 4 server = socket.socket()
 5 server.bind(('localhost',6969)) #绑定要监听端口
 6 server.listen(5) #监听
 7 
 8 print("我要开始等电话了")
 9 while True:
10     conn, addr = server.accept()  # 等电话打进来
11     # conn就是客户端连过来而在服务器端为其生成的一个连接实例
12     print(conn, addr)
13     print("电话来了")
14     count = 0
15     while True:
16         data = conn.recv(1024)
17         print("recv:",data)
18         if not data:
19             print("client has lost...")
20             break
21         conn.send(data.upper())
22         count+=1
23         if count >10:break
24 
25 server.close()
服务器端

相关文章:

  • 2022-01-07
  • 2021-07-18
  • 2021-12-10
  • 2021-09-29
  • 2022-01-11
  • 2021-09-09
  • 2022-12-23
  • 2022-01-30
猜你喜欢
  • 2021-07-11
  • 2022-12-23
  • 2021-04-29
  • 2021-08-12
  • 2021-08-29
  • 2021-06-19
相关资源
相似解决方案