人生苦短,我用python
简洁高效,这才是理想的语言啊
分享一点python的学习经验-----如何用python写一个简单的web服务器
首先,我们需要简单地了解一下网络通信协议,这里用白话介绍一下TCP和UDP这两种传输层的协议
TCP:通信过程之中每次通信都会进行确认操作,确保报文的安全送达,相当于用对讲机说话,web服务器和客户端就是此采用此协议。
UDP:通信之中不需要确认操作,只完成报文的单项传输,相当于写信,DNS服务器与客户端的通信就是采用此协议。
再要了解一个网络编程中的概念,就是socket套接字,socket用于建立一个网络链接,创建套接字需要指定使用的协议和目标主机的ip和端口号,端口号计算机中通信过程中用于标记应用程序的一个序号,每个运行中的程序都会占用至少一个端口号
下面代码
import socket
my_ip = '这里填你电脑的ip地址0.0'#可在命令行中输入 ipcongig 查看
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立一个套接字
s.bind((my_ip,8080))绑定ip与端口 这里端口填的8080
s.listen() #监听。
new_s,adress = s.accept() #这里accep()用于返回一个通信时的套接字和请求主机的地址
print(new_s.recv(1024),'\n',adress) #recv()用于接受数据,相应的send()用于发送数据
运行这段代码,然后打开浏览器,在地址栏输入ip:8080格式的地址,然后你就可以看到python程序打印出了两个数据,一是客户端的请求,再就是你的ip和你浏览器的端口组成的元组
当然这样我们并不满足,我们需要给浏览器返回一个数据,并显示一些东西
于是我们只需要可以发送相应格式的数据,就可以在浏览器中显示了,而数据格式应该类似于
HTTP\1.1 200 OK\r\n
\r\n #此处应该包括很多参数数据,这里不细讲
Hello World!!
然后我们完善代码
mport socket
HOST,PORT = 'your ip',8080
listen_socket = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR,1)
listen_socket.bind((HOST,PORT))
listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
while True:
client_connection,client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request)
http_response = b"""
HTTP/1.1 200 OK\r\n
\r\n
Hello,world!
"""
client_connection.send(http_response)
client_connection.close()
打开浏览器,输入ip:8080
就可以在网页上看到 Hello,World!了
当然这是最简单的一种情形,做个了解足够了。