python网络编程、套接字、HTTP协议 (2)

* 传输过程中有建立和断开连接的过程
三次握手:建立数据传输两端的持续连接
  1. 客户端向服务器发起连接请求(我可以牵你手吗)
  2. 服务器收到连接请求进行确认,返回报文(可以)
  3. 客户端收到服务器确认进行连接创建(牵手成功)

四次挥手:断开连接的两端,保证数据的传输完整
  1.主动方发送报文,告知被动方要断开连接(我们分手吧,你准备好)
  2.被动方返回报文,告知收到请求,准备断开(知道了)
  3.被动方再次发送报文,告知准备完毕可以断开(你分手吧)
  4.主动方发送报文完成断开(分手了)

适用情况:文件的上传下载,网络情况良好,需要必须保证可靠性的情况
比如 : 信息聊天,文件上传下载,邮件,网页获取

面向无连接的传输服务 ---》 udp协议

 传输特征 :
  * 保证传输的可靠性
  * 无需建立三次握手四次挥手的连接断开过程
  * 消息的收发比较自由,不受其他约束(请原谅我这一生放荡不羁爱自由)

适用情况 : 网络情况较差,对可靠性要求不高,收发消息的两端不适合建立固定连接
比如 :网络视频,群聊,发送广播

套接字----socket socket模块的套接字属性

(s表示一个套接字对象)

s.type  获取套接字类型  # SocketKind.SOCK_STREAM 流式套接字

s.family  获取地址族类型  # AddressFamily.AF_INET 获取地址族类型

s.fileno()  获取套接字的文件描述符(每一个IO操作系统都会为其分配一个不同的正整数,该正整数即为此IO操作系统的文件描述符)

s.getsockname()  获取套接字绑定的地址  # ('192.168.191.3', 8888)

s.getpeername()  获取连接套接字另一端的地址 # ('192.168.191.3', 7826)

s.setsockopt(level,optname,value)  设置套接字选项,丰富修改原有套接字功能

  参数: level 设置选项的类型  optname 每个选项类型中的子选项  value 为选项设置值

s.getsockopt(level,optname)  获取套接字选项的值

python网络编程、套接字、HTTP协议

python网络编程、套接字、HTTP协议

1 from socket import * 2 s = socket() 3 print(s.type) # SocketKind.SOCK_STREAM 流式套接字 4 print(s.family) # AddressFamily.AF_INET 获取地址族类型 5 print(s.fileno()) # 376 6 s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) # 设置端口可重用 7 print(s.getsockopt(SOL_SOCKET,SO_REUSEADDR))# 获取选项值 1 8 s.bind(("192.168.191.3",8888)) 9 print(s.getsockname()) # 获取绑定的地址 ('192.168.191.3', 8888) 10 s.listen() 11 c,addr = s.accept() # addr也是链接客户端的地址 12 print(c.getpeername()) # ('192.168.191.3', 7826)获取链接套接字客户端地址 13 data = c.recv(1024) 14 print(data) # b'i' 15 c.close() 16 s.close()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzdxp.html