我正在使用python3,我在服务器上有一个脚本,该脚本从客户端获取UDP请求,然后 服务器将大量请求转换为tcp并将其内部传输到服务器上的py脚本。
我的问题是: 我在服务器上的tcp_to_udp脚本知道,第一个请求始终是标头,然后是数据。 如何使我的脚本知道标头和数据之间的区别?
我希望我的脚本知道什么是数据和什么是标头,因为现在只 知道第一个请求是标头,但如果连接重新启动,此方法就不太好。
如果是多重连接,也要知道哪些标头连接到了哪些数据。
我的脚本现在(在服务器上):
import json
import requests
import signal
import sys
import socket
from _thread import *
UDP_IP = ""
UDP_PORT = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
s.bind((UDP_IP, UDP_PORT))
print("Wating for connections")
def data_iter():
while True:
getInfo = data, addr = s.recvfrom(10000000024)
print("My data:", data)
yield(data)
headers = None
while headers is None:
headers, addr = s.recvfrom(4024)
if headers is not None:
break
headers = headers.decode("utf-8")
headers = json.loads(headers)
try:
r = requests.post('http://10.0.0.1:5001/stream', headers=headers, data=data_iter())
except socket.error as error:
if error.errno == errno.EPIPE:
print(os.strerror(error.errno))
else:
raise
数据类型: 标头是转换为字节的json类型:
标题:b'{"RECORDER_NAME": "USB Audio OnBoard: #1 (hw:0,1)", "LZMA": "1", "RECORDER_RATE": "44100"}'
我的数据:b'nanannananananna'
#因为正在测试