最简单的前后端数据交互

最简单的前后端数据交互

1 前言

本人断断续续地接触Web前后端已有一年多了,但是一直停留在表面,只知其一,不知其二。这个周末马上就要过去了,但是这两天啥都没做,想到这里,强烈的负罪感冲上心头,于是从床上跳起来,打开电脑就是一顿敲打,我今天唯一的目标就是完成一个最简单的Web服务器实例。通过这个实例我们可以了解:

  • 浏览器在访问服务器时给浏览器发了什么
  • 服务器如何给浏览器发送数据

2 准备

  • Python3(当然,不强制要求,只要能够完成简单的Socket编程即可,原理相同)

3 代码实例

import socket

HOST, PORT = "192.168.0.107", 8888										# 这里IP地址替换成自己的IP地址即可,这样如果使用路由器的话可以通过手机访问,方便调试

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 		# 创建服务端套接字
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  	# 保证服务器的监听socket,即listen_socket在关闭后对应的端口能够立即释放,
																		# 否则将会在数分钟后才能释放
listen_socket.bind((HOST, PORT))  										# 绑定地址和端口,''为空默认为本地'127.0.0.1'
listen_socket.listen(5)

print('Web服务器启动成功...')

while True:
	print('\n\n等待客户端连接===================================================================')
	client_connection, client_address = listen_socket.accept()
	print('客户{}端连接成功'.format(client_address))
	request = client_connection.recv(1024)
	print(request.decode())
	http_response = 'HTTP/1.1 200 OK\r\n\r\n<!DOCTYPE html><html><header><meta charset="utf-8"><title>欢迎光临</title></header><body><h1>欢迎光临!</h1></body></html>'
	client_connection.sendall(http_response.encode())
	client_connection.close()
	print('客户端被关闭=====================================================================')

通过浏览器访问192.168.0.107:8888后服务器的打印信息如下(由于来回切换界面太麻烦,所以我把手机连入局域网,通过手机访问,用着很有感觉~)

等待客户端连接===================================================================
客户('192.168.0.106', 59212)端连接成功
浏览器请求信息:


GET /favicon.ico HTTP/1.1
Host: 192.168.0.107:8888
Connection: keep-alive
User-Agent: Mozilla/5.0 (Linux; Android 5.1; vivo X6Plus D Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/7.4.10.0
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://192.168.0.107:8888/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,en-US;q=0.9


客户端被关闭=====================================================================

浏览器的效果如下:

4 结语

本篇不打算解释浏览器请求的具体内容含义,后面用到的时候会专门讲解,谢谢!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值