python怎么连接web服务器_将web服务器连接到浏览器(Python)

我尝试使用socket和线程(用于多线程)来制作web服务器。我试图用127.0.0.1:8888连接此服务器,但失败了。

因为我是python的初学者,所以很难发现错误。请帮我纠正这些错误。

这是密码。在

(+我正在使用Python2.7,我得到的错误是127.0.0.1拒绝从浏览器连接,在python上没有错误消息。)import BaseHTTPServer

import socket

import threading

import time

#making method

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):

def _set_headers(self):

#error handling

if self.protocol_version != 'HTTP/1.1':

self.send_error(400)

return

elif self.path !='/':

self.send_error(404)

return

else:

self.send_respose(200)

self.send_header('Content-type', 'text/html')

self.send_header('Content-length', 1024)

self.end_headers()

def do_GET(self):

self._set_headers()

self.wfile.write('Hello World')

return

def do_PUT(self):

content_length=int(self.headers['Content-Length'])

put_data=self.rfile.read(content_length)

self._set_headers()

self.wfile.write('Hello World')

return

#making one socket

sock=socket.socket (socket.AF_INET, socket.SOCK_STREAM)

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

sock.bind(('',8888))

sock.listen(5)

#multi threading

class Thread(threading.Thread):

def __init__(self, i):

threading.Thread.__init__(self)

self.i=i

self.start()

def run(self):

server = BaseHTTPServer.HTTPServer(('',8888), Handler)

server.socket=sock

server.server_bind=self.server_close= lambda self: None

server.serve_forever()

if __name__=='__main__':

print('Started WebServer on port 8888')

[Thread(i) for i in range(100)]

time.sleep(100)

Python3可以使用内置模块`http.server`来实现一个微型的web服务器。以下是一个简单的例子: ```python import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever() ``` 在上面的代码中,我们使用了`http.server`和`socketserver`两个内置模块。`http.server`提供了`SimpleHTTPRequestHandler`类来处理HTTP请求,`socketserver`提供了`TCPServer`类来处理TCP连接。我们只需要在指定的端口(这里是8000)启动服务器并让它一直运行,即可实现一个简单的web服务器。 运行这段代码后,在浏览器中访问`http://localhost:8000`,即可看到服务器返回的默认页面。 如果想要自定义返回的内容,可以自定义一个继承自`http.server.BaseHTTPRequestHandler`的类,并在其中实现`do_GET`方法。例如: ```python class MyHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() message = "Hello, world!" self.wfile.write(bytes(message, "utf8")) PORT = 8000 with socketserver.TCPServer(("", PORT), MyHandler) as httpd: print("serving at port", PORT) httpd.serve_forever() ``` 在这个例子中,我们自定义了`MyHandler`类,并在其中实现了`do_GET`方法,这个方法会在收到GET请求时被调用,并向客户端返回一条简单的“Hello, world!”消息。注意,我们在`send_header`方法中设置了`Content-type`为`text/html`,这表示返回的内容类型为HTML格式的文本。在`wfile.write`方法中,我们将消息转换成了字节流,并向客户端发送。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值