htpp协议 Rquest Headers格式:

  请求方法空格URL空格协议版本回车符换行符

  头部字段名:值回车符换行符

  ···

  头部字段名:值回车符换行符

  回车符换行符

  请求数据

socket网络聊天

服务端

#sokcet服务断
import socket
import threading
server = socket.socket()
# 绑定到0.0.0.0:8000端口上
server.bind(('0.0.0.0',8000)) # 如果是绑定127.0.0.1,那么只能本地连接
server.listen() def handle_sock(sock,addr):
while True:
# recv是阻塞的
tmp_data = sock.recv(1024)
print(tmp_data.decode("utf8"))
input_data = input()
sock.send(input_data.encode("utf8"))
# 获取客户端连接并启动线程去处理
while True:
# 阻塞,等待连接
sock,addr = server.accept() # 启动一个线程去处理新的用户连接
client_thread = threading.Thread(target=handle_sock,args=(sock,addr))
client_thread.start()
# sock.close()

客户端

# socket客户端
import socket
client = socket.socket()
client.connect(('192.168.2.129',8000))
while True: input_data = input()
client.send(input_data.encode('utf8'))
server_data = client.recv(1024)
print(server_data.decode('utf8')) client.close()

socket模拟http实现拉取百度首页源码:

# socket客户端
import socket
http_client = socket.socket()
http_client.connect(('www.baidu.com',80))
html = "GET / HTTP/1.1\r\nConnection:close\r\n\r\n"
http_client.send(html.encode("utf8")); data = b""
while True:
tmp = http_client.recv(1024)
if tmp:
data += tmp;
else:
break
print(data.decode('utf8'))
input()

socket模拟http实现nginx接受访问:

#tcp实现http协议
import socket
server = socket.socket() server.bind(('0.0.0.0',80))
server.listen()
# 获取客户端连接并启动线程去处理
while True:
print("等待连接")
# 阻塞,等待连接
sock,addr = server.accept()
tmp_data = sock.recv(1024)
print("收到浏览器信息:")
print(tmp_data.decode("utf8"))
# 谷歌浏览器访问 打印为:
# GET / HTTP/1.1
# Host: 192.168.2.129
# Connection: keep-alive
# Cache-Control: max-age=0
# Upgrade-Insecure-Requests: 1
# User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
# Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
# Accept-Encoding: gzip, deflate
# Accept-Language: zh-CN,zh;q=0.9
response_template = '''HTTP/1.1 200 OK <h1>hello</h1>'''
sock.send(response_template.encode("utf8"))
# 浏览器展示形式为:
# Request URL: http://192.168.2.129/
# Request Method: GET
# Status Code: 200 OK
# Remote Address: 192.168.2.129:80
# Referrer Policy: no-referrer-when-downgrade
print("已回信息")
sock.close()
print("已断开连接")

Rquest Headers

tcp与http协议 以及python的实现的更多相关文章

  1. Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型

    Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...

  2. arp协议分析&python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  3. TCP 和 UDP 协议

    TCP 和 UDP 协议 一.socket层 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐 ...

  4. 基于TCP与UDP协议的socket通信

    基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...

  5. 对TCP/IP网络协议的深入浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  6. TCP与UDP协议

    传输控制协议(Transmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP)是典型的传输层协议. 传输层协议基于网络层 ...

  7. 转:对TCP/IP网络协议的深入浅出归纳

    转自:http://blog.jobbole.com/74795/ 前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没 ...

  8. 对TCP/IP网络协议的深入浅出归纳(转)

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  9. 关于tcp封装http协议

    如果tcp中没有上层协议,那么就是简单的数据包的传输,如果tcp中有上层协议,那么,当客户端把tcp包发给server的时候,server端的socket收到数据包后,从中分离出应用层协议,交给上层继 ...

随机推荐

  1. C#上位机之—WinForm实现串口通信示例

    上位机开发常用到串口通信来控制设备,串口通信的主要参数:COM口,波特率(9600),停止位(One),数据位(8),校验位(None),括号中的是常用值,具体意思我也不太懂,会用能实现功能就行哈哈: ...

  2. jQuery---jQuery插件

    jQuery插件 使用插件的步骤 1. 引入jQuery文件 2. 引入插件(如果有用到css的话,需要引入css) 3. 使用插件 <!--1. 引入jquery的js文件--> < ...

  3. 00 - PXE | 环境准备

    00 - PXE | 环境准备 TFTP PXE 1. TFTP服务搭建 安装环境Centos7.3 1.1 安装 # yum install xinetd # yum install tftp # ...

  4. KindEditor配置和使用

    1下载kindeditor包,目前最新版本是kindeditor-3.5.5.下载地址:http://www.kindsoft.net/ 2.解压之后,解压目录kindeditor如下图所示. 3.开 ...

  5. 监听Ueditor的 iframe中的按键,按键组合事件(Ctrl+s)

    个人博客 地址:https://www.wenhaofan.com/a/20190716214214 监听按键事件 ueditor.ready(function() {     UE.dom.domU ...

  6. demo 基于html css 实现小米官网部分内容搭建

    文件夹目录 mi-site-----------主文件夹 css------------css文件文件夹 fonts.css---矢量图标css index.css---主页面样式css reset. ...

  7. JN_0010:谷歌浏览器启动安全模式,直接打开H5项目

    1,找到桌面chrome 2,复制粘贴一份新的 3,右键属性 4,在目标输入框最末端加上这句(注意空格) --disable-web-security --user-data-dir=D:\chrom ...

  8. unity目前学的一些操作

    目前是根据b站的一位迈扣老师的30集基础教学学习的,用的是sunny land这个资源包进行的教学,这位老师讲得很清晰,吐词清晰,思路也清晰,推荐哦.其实我比较喜欢这样的老师,思路 吐词清晰.就像以前 ...

  9. C# WinForm MessageBox.Show显示在窗体中间

    一.新建MessageBoxEx类,并添加以下代码. using System; using System.Windows.Forms; using System.Text; using System ...

  10. ng-起步

    目前,无论你使用什么前端框架,都必然要使用到各种 NodeJS 工具,Angular 也不例外.与其它框架不同,Angular 从一开始就走的"全家桶"式的设计思路,因此 @ang ...