Python 3.x 我正在从服务器发送两个字符串,而我的主机正在将这两个字符串作为一个字符串读取。我怎样才能解决这个问题?

Python 3.x 我正在从服务器发送两个字符串,而我的主机正在将这两个字符串作为一个字符串读取。我怎样才能解决这个问题?,python-3.x,multithreading,sockets,multiprocessing,queue,Python 3.x,Multithreading,Sockets,Multiprocessing,Queue,我的服务器正在不断地向我的主机发送字符串String1='{a:1,b:2}'和String2='{a:4,b:5}' import socket HOST = '127.0.0.1' PORT = 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept()

我的服务器正在不断地向我的主机发送字符串
String1='{a:1,b:2}'
String2='{a:4,b:5}'

import socket

HOST = '127.0.0.1'  
PORT = 65432        

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

但是我的主机正在接收两个字符串作为一个字符串
{a:1,b:2}{a:4,b:5}


import socket

HOST = '127.0.0.1'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    while True:
        data = s.recv(1024)

我不想丢失任何数据,我也不能在速度上妥协。请提出一些解决方案


提前感谢

如果您将两个字符串写入一个文件并将其交给某人,他们如何知道第一个字符串的结束位置和下一个字符串的开始位置?插座也是这样工作的

您必须缓冲数据并实现一个方法来提取单独的字符串。这可以通过首先发送一个表示字符串大小的字节来完成,或者通过一个不会出现在字符串中的字符(null、换行符等)来分隔它们


请参阅以获取另一种解决方案。

您是真正发送
String1='{a:1,b:2}'
还是只发送
{a:1,b:2}
。考虑到你的结果,我希望是后者。您正在告诉服务器读取下一个1024字节的输入。因此,除非您发送的第一个内容正好是1024字节,
数据将是一个字符串。或者检测字符串的独立部分,或者确保发送一个换行符,并在上面拆分。哦,好的,谢谢,是的,我正在发送一个尽可能重复的字符串