Tôi đang sử dụng tập lệnh python để làm máy chủ web của mình bằng mô-đun BaseHTTPServer
. Dưới đây là mã của tôi cho máy chủ:Nhận địa chỉ IP từ yêu cầu HTTP POST bằng cách sử dụng Python
import string,cgi,time
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
#import pri
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
try:
if self.path.endswith("/"):
f = open(curdir + sep + "index.html")
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write("<HTML> GET OK.<BR>")
f.close()
return
return
except IOError:
self.send_error(404,'File Not Found: %s' % self.path)
def do_POST(self):
global rootnode
try:
ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
if ctype == 'multipart/form-data':
query=cgi.parse_multipart(self.rfile, pdict)
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
file = query.get('file')
self.wfile.write("<HTML> POST OK.<BR>")
f = open("data.zip", "wb")
f.write(file[0])
f.close()
print("File received.")
return
except :
pass
def main():
try:
server = HTTPServer(('', 8080), MyHandler)
print 'started httpserver...'
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down server'
server.socket.close()
if __name__ == '__main__':
main()
Có cách nào để nhận địa chỉ IP của yêu cầu POST khi máy chủ của tôi nhận được yêu cầu đó không? Rất cám ơn trước.
Khi tôi làm 'in self.client_address', nó mang lại cho tôi một địa chỉ IP và một số. Đó có phải là số cổng không? – androidnoob
@androidnoob: Có, số thứ hai là cổng của khách hàng. Nếu bạn chỉ muốn địa chỉ IP, hãy kết thúc '[0]'. – icktoofay
Tôi hiểu. Cảm ơn bạn rất nhiều vì câu trả lời nhanh chóng của bạn! Tôi không thể cảm ơn bạn đủ cho nó! – androidnoob