Сервер читает два запроса от клиента как один
Пишу онлайн-приложение на Андроид, с сервером на пайтоне. После вынесения функции GAME в отдельный поток на сервере началось непрерывное записывание запросов, и 2 запроса оказались в одной переменной (вместо get1<-'request1', get2<-'request2' - get1<-'request1request2'
Фрагмент с отправкой проблемных запросов от клиента:
override fun run() {
activity.game_screen.side_width=side_width
val message=JSONObject()
message.put("c","fight")
dout.writeUTF(message.toString())
dout.flush()
inputStream.read(ByteArray(4),0,4)
val send=JSONObject()
send.put("n",warrior_name)
send.put("h",height)
send.put("w",width)
dout.writeUTF(send.toString())
}
Сервер:
import threading
import socket
import json
def with_client(client):
threading.Thread(target=GAME,args=[client]).start()
while True:
if client[3]:
for send in client[3]:
conn.sendall(send)
client[3]=None
if not client[2]:
client[2]=str(client[0].recv(1024),'utf-8')[2:]
print('client:',client[2]) #'{'c':'fight'}{'n':'name','h':500,'w':1000}'
client[2]=json.loads(client[2])
def GAME(client):
while True:
do_with_get(client[2])
client[2]=None
client[3]=you_must_send()
if __name__ == '__main__':
sock=socket.socket(socket.AF_INET,
socket.SOCK_STREAM,
proto=0)
sock.bind(('',8080))
sock.listen(1000)
while True:
conn,addr=sock.accept()
client=[conn,addr,None,['wait'.encode('utf-8')]]#conn,addr,get,send
threading.Thread(target=with_client,args=[client]).start()
В чем может быть дело?