ホームページ  >  記事  >  バックエンド開発  >  Python は単純な http サーバーを実装します

Python は単純な http サーバーを実装します

不言
不言オリジナル
2018-04-23 16:09:044546ブラウズ

この記事では主に Python で単純な http サーバーを実装する方法を詳しく紹介します。興味のある方は参考にしてください。

単純な http サーバー関数を実装するための Python スクリプトを作成します。

1. Web サイトにアクセスします。ブラウザのアドレス: 172.20.52.163:20014

2. ブラウザからリクエストを受信した後、サーバーはローカルのindex.htmlファイルの内容を読み取り、ブラウザ

コード実装

サーバーに送り返します。 .py

#!/usr/bin/python 
import socket 
import signal 
import errno 
from time import sleep  
 
 
def HttpResponse(header,whtml): 
  f = file(whtml) 
  contxtlist = f.readlines() 
  context = ''.join(contxtlist) 
  response = "%s %d\n\n%s\n\n" % (header,len(context),context) 
  return response 
 
def sigIntHander(signo,frame): 
  print 'get signo# ',signo 
  global runflag 
  runflag = False 
  global lisfd 
  lisfd.shutdown(socket.SHUT_RD) 
 
strHost = "172.20.52.163" 
HOST = strHost #socket.inet_pton(socket.AF_INET,strHost) 
PORT = 20014 
 
httpheader = '''''\ 
HTTP/1.1 200 OK 
Context-Type: text/html 
Server: Python-slp version 1.0 
Context-Length: ''' 
 
lisfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
lisfd.bind((HOST, PORT)) 
lisfd.listen(2) 
 
signal.signal(signal.SIGINT,sigIntHander) 
 
runflag = True 
while runflag: 
  try: 
    confd,addr = lisfd.accept() 
  except socket.error as e: 
    if e.errno == errno.EINTR: 
      print 'get a except EINTR' 
    else: 
      raise 
    continue 
 
  if runflag == False: 
    break; 
 
  print "connect by ",addr 
  data = confd.recv(1024) 
  if not data: 
    break 
  print data 
  confd.send(HttpResponse(httpheader,'index.html')) 
  confd.close() 
else: 
  print 'runflag#',runflag 
 
print 'Done'

index.html

<html> 
 <head> 
   <title>Python Server</title> 
 </head> 
 <body> 
  <h1>Hello python</h1> 
  <p>Welcom to the python world</br> 
 </body> 
</html>

テスト

テスト結果:

ブラウザ

関連するおすすめ:

Pythonはブラウザをランダムに呼び出してWebページを開くメソッドを実装しています

PythonはExcelへのデータの書き込み順序や配置をカスタマイズするメソッドを実装しています

以上がPython は単純な http サーバーを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。