Python网络通信之socket模块(三)模拟apache服务器的访问状态
服务器主机:注释版:[root@ChangerLee 模拟Http服务器返回状态]# cat server.py#!/bin/env python#coding=utf-8import socket def request_handle(client_connect):'本服务器主机通过socket类,实例化一个socket实例对象通过传参,本函数获取到的客户端的socket对象,
·
服务器主机:
注释版:
[root@ChangerLee 模拟Http服务器返回状态]# cat server.py
#!/bin/env python
#coding=utf-8
import socket
def request_handle(client_connect):
'本服务器主机通过socket类,实例化一个socket实例对象通过传参,本函数获取到的客户端的socket对象,同调用其recv()方法,获得客户端所发出的信息并调用其send方法,给客户端法消息'
buf = client_connect.recv(1024)
client_connect.send("HTTP/1.1 200 OK\r\r\r\n")
client_connect.send("Hello,World!!!")
def main():
‘本服务器主机通过socket类,实例化一个socket实例对象,’
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
'''通过调用sock实例方法bind绑定IP和端口,让服务器监听在此套接字上
以序列形式传给sock实例所调用的listen方法
'''
sock.bind(('192.168.1.105',8080))
'''最多可以阻塞五个TCP链接,第六个链接将忽略'''
sock.listen(5)
while True:
''' 代码运行到这会端阻塞,等待客户端来链接,只要有客户来,accept就能'''
connect,address = sock.accept()
'''connect 就是客户端的socket实例对象 '''
request_handle(connect)
'''将与客户端建立的socket链接断开,
回到本地sock实例的accept方法调用后的阻塞状态
准备监听下一次请求'''
connect.close()
if __name__ == '__main__':
‘’‘本程序如果是主函数则执行main()’‘’
main()
简洁版:
#!/bin/env python
#coding=utf-8
import socket
def request_handle(client_connect):
buf = client_connect.recv(1024)
client_connect.send("HTTP/1.1 200 OK\r\r\r\n")
client_connect.send("Hello,World!!!")
def main():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('192.168.1.105',8080))
sock.listen(5)
while True:
connect,address = sock.accept()
request_handle(connect)
connect.close()
if __name__ == '__main__':
main()
运行server:
[root@ChangerLee 模拟Http服务器返回状态]# python server.py
客户端主机:
[root@ChangerLee ~]# netstat -antple|grep "8080"
tcp 0 0 192.168.1.105:8080 0.0.0.0:* LISTEN 0 57289 6492/python
[root@ChangerLee ~]# curl -I 192.168.1.105:8080
HTTP/1.1 200 OK
更多推荐
已为社区贡献2条内容
所有评论(0)