Я новичок в Python.
Я пытаюсь сделать простой код сервера в Python,
Простой код сервера, сервер отвечает на любой набор команд от клиента и возвращает данные в формате JSON.
Это просто не работает для меня. Он не получает вторую команду от клиента, просто зависает,
Пожалуйста, помогите. Я не смог найти пример команды от Google.
Спасибо, Налан
import socket
from lab4_try import *
import socket
import pickle
HOST = '127.0.0.1' # Standard loopback interface address (localhost)
PORT = 65432 # Port to listen on (non-privileged ports are > 1023)
....
print("Server started")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(5)
while True:
mydata = []
client, addr = s.accept()
print('client Addr:', addr)
data = []
while True:
print("Waiting for command ")
tmp = str(client.recv(100).decode())
tmp = tmp.upper()
data = str(tmp).split()
if( len(data) >0 ) :
print("server rxd command", data )
if( data[0] == 'COUNTRY' ) :
if len(data) == 1 :
mydata = unDB.getData(DBFILENAME)
mydata = list(mydata)
mydataJson = json.dumps(mydata)
print("\n\n")
print("1Json string to be sent:", mydataJson)
print("\n\n")
client.sendall(mydataJson.encode())
#client.close()
elif len(data) == 2 :
print("\n\nrequst into db:", data[1])
mydata = unDB.getData(DBFILENAME, country = data[1])
mydata = list(mydata)
mydataJson = json.dumps(mydata)
print("\n\n2Json string to be sent:", mydataJson)
print("\n\n")
client.sendall(mydataJson.encode())
#client.close()
elif len(data) == 3 :
mydata = unDB.getData(DBFILENAME, country = data[1], value = data[2])
mydata = list(mydata)
mydataJson = json.dumps(mydata)
print("\n\n")
print("3Json string to be sent:", mydataJson)
print("\n\n")
client.sendall(mydataJson.encode())
#client.close()
elif( (data[0]).upper() == 'DONE' or
(data[0]).upper()== 'STOP') :
client.close()
break
else :
print("Unknown command")
client.sendall("".encode())
client.close()