基于Python的HttpServer

来源:互联网 发布:什么是网络通信 编辑:程序博客网 时间:2024/04/27 18:32

    最近需要做一个http的服务器,发现python提供的simplehttpserver用起来真的很方便,几十行代码就可以实现一个每一个请求都在一个线程里处理的简单的http服务器。

服务器代码如下:

#!/usr/bin/python#coding=utf8import SimpleHTTPServerimport loggingimport urlparse,urllibfrom ThreadingServer import ThreadingSimpleServerPORT_NUMBER = 8080IP = '127.0.0.1'class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):    def do_GET(self):        logging.warning("======= GET STARTED =======")        logging.warning(self.headers)        SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)    def do_POST(self):        logging.warning("======= POST STARTED =======")        # headers from client        logging.warning(self.headers)        logging.warning("======= POST VALUES =======")        data = self.rfile.read(int(self.headers['Content-Length']))        data = dict(urlparse.parse_qsl(data))        result = Exec(eval(data['@param1']), eval(data['@param2']))# result to client        params = urllib.urlencode({'@resultcode': 0, '@result': result})        self.wfile.write(params)def Exec(path1, path2):        return "path3"def Main():        server = ThreadingSimpleServer((IP, PORT_NUMBER), MyHandler)        print 'Started httpserver on port ' , PORT_NUMBER        # listen forever        server.serve_forever()if __name__ == "__main__":        Main()
客户端代码:

#!/usr/bin/python#coding=utf8import httplib, urllibimport urlparseurl = "127.0.0.1:8080"def RequestSolve(param1, param2):        params = urllib.urlencode({'@param1': param1, '@param2': param2})        headers = {}        # connection        conn = httplib.HTTPConnection(url)        # request        conn.request("POST", "", params, headers)        # response        response = conn.getresponse()        # result        result = response.read();        return dict(urlparse.parse_qsl(result))def GetLargeArray():        result = [];        for i in range(100):                line = [i, i, i, i]                result.append(line)        return result;if __name__ == "__main__":        param1 = GetLargeArray();        param2 = GetLargeArray();        print "start request"        result = RequestSolve(param1, param2)        print result['@resultcode'], result['@result']


0 0
原创粉丝点击