如何分辨套接字中的标头和数据之间的区别?

时间:2019-07-01 08:50:32

标签: python-3.x sockets request header udp

我正在使用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'#因为正在测试

0 个答案:

没有答案