【发布时间】:2020-05-15 13:21:22
【问题描述】:
一点解释: 我有多个客户端和一个用 python 编写的非常简单的 http 客户端。 在所有客户端中,一个客户端向 http 服务器发送一个带有 4 个值的 post 请求(让我们将此客户端称为“客户端 Alpha”),所有其余客户端发送 http post 请求只是为了建立与服务器的连接(让我们调用这些客户端“客户端测试版”)客户端测试版发送请求背后的原因是,他们可以接收通过客户端 alpha 发送的值...
import kwargs
import args
from http.server import BaseHTTPRequestHandler, HTTPServer
import logging
import requests
class S(BaseHTTPRequestHandler):
def _set_response(self):
self.send_response(200,1)
self.send_header('Content-type', 'int')
self.end_headers()
def breakRequest(self, str):
l = []
x = str.split("&")
for i in x:
a = i.split("=")
l.append(a[1])
return l[0], l[1], l[2], l[3]
def do_POST(self):
content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
post_data = self.rfile.read(content_length) # <--- Gets the data itself
var1,var2,var3,var4 = self.breakRequest(str(post_data.decode('utf-8')))
if (var1 !='ard'):
s = "\n" + var1+"\n"+var2+"\n"+var3 + "\n"+var4 + "\n"
logging.info(s)
logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n",
str(self.path), str(self.headers), post_data.decode('utf-8'))
self._set_response()
self.wfile.write("1".format(self.path).encode('utf-8'))
def run(server_class=HTTPServer, handler_class=S, port=6060):
logging.basicConfig(level=logging.INFO)
server_address = ('', port)
httpd = server_class(server_address, handler_class)
logging.info('Starting httpd...\n')
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
logging.info('Stopping httpd...\n')
if __name__ == '__main__':
from sys import argv
if len(argv) == 2:
run(port=int(argv[1]))
else:
run()
客户端 alpha 发送的内容: 客户端 alpha 发送 4 个值,这些值存储在 var1、var2、var3、var4 中
客户端测试版发送的内容 客户端 beta 只发送一次 http post 请求以建立与服务器的连接
我想要达到的目标 一旦客户端 beta 建立了与服务器的连接,我试图让服务器将客户端 alpha 接收到的值存储到 var1、var2、va3、var4 中,然后将这些值立即发送给所有 beta 客户端已经发送出去然后等待,当服务器从客户端 alpha 接收到新值时,然后将这些新值发送到客户端 beta
每次更改测试客户端的IP地址时,它都会再次发送请求以建立连接。 和
我对 python 不是很擅长,我目前所拥有的一切都归功于谷歌,我一直在搜索示例并一直在实施和测试它们,最终得到了一个 python 代码,它接收 http post 数据并将其存储到变量中 我将非常感谢您的帮助 提前致谢 并为任何错误道歉
【问题讨论】:
标签: python http httprequest