Python, ответ сервера на несколько команд от клиента - PullRequest
0 голосов
/ 24 марта 2020

Я новичок в 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()




Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...