我正在尝试使用可以在任何Web浏览器上连接的套接字在python中创建服务器。我使用主机作为“localhost”,端口作为8888.
当我尝试连接它时,我想要显示的内容显示为瞬间,然后它会随浏览器显示“连接已重置”。
我已经让它做了一些非常简单的测试,如果它仍然可以做到,它确实如此。
有办法阻止这个吗?
import time
import socket
HOST = "localhost"
PORT = 8888
def function(sck):
sck.send(bytes("test"),"UTF-8"))
sck.close()
ssck=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ssck.bind((HOST,PORT))
ssck.listen(1)
while True:
sck,addr=ssck.accept()
function(sck)
答案 0 :(得分:1)
可能与Perl: Connection reset with simple HTTP server,Ultra simple HTTP socket server, written in PHP, behaving unexpectedly,HTTP Server Not Sending Complete File To WGET, Firefox. Connection reset by peer?相同。也就是说,您没有从浏览器中读取HTTP标头,只是发送您的响应并关闭连接。
答案 1 :(得分:0)
TL;博士 你的功能应该是
def function(sck):
sck.send(bytes("HTTP/1.1 200 OK\n\n<header><title>test page</title></header><body><h1>test page!</h1></body>"),"UTF-8"))
sck.close()
使用简单的服务器,您只需创建一个TCP套接字。
HTTP协议建议客户端要求提供一个页面,例如:
HTTP/1.1 GET /somepath/somepage.html
Host: somehost.com
OtherHeader: look at the http spec
响应应为:
HTTP/1.1 200 OK
some: headers
<header></header><body></body>