コード例 #1
0
 def receiving(self, response):
     response = response.decode('ascii')
     print(response)
     rec_response = MessageBuilder.get_object_of_json(response)
     print(rec_response.response)
     print(rec_response.alert)
     log_config.My_log()
     return rec_response.response, rec_response.alert
コード例 #2
0
 def presence_msg(self, type="presence"):
     if self.name is None:
         self.name = input("Your name: ")
     pre_msg = MessageBuilder.create_presence_message(self.name)
     pre_msg1 = pre_msg.encode_to_json(self)
     pre_msg2 = pre_msg1.encode('ascii')
     self.s.send(pre_msg2)
     log_config.My_log()
コード例 #3
0
class Server:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clients = []

    def __init__(self, host='localhost', port=8008):
        self.s.bind((host, port))
        log_config.My_log()

    @staticmethod
    @log
    def j_message(msg):

        print(msg)
        msg_j = MessageBuilder.encode_to_json(msg)
        return msg_j

    log_config.My_log()

    @staticmethod
    @log
    def send_response(client, code, alert=None):
        gen_response = MessageBuilder.create_response_message(code, alert)
        gen_response_json = gen_response.encode_to_json()
        client.send(gen_response_json.encode('ascii'))
        log_config.My_log()

    @log
    def run_server(self):
        quit_server = False

        while not quit_server:
            try:
                self.s.listen(99)
                client, addr = self.s.accept()
                print('Получен запрос на соединение от %s' % str(addr))
                self.clients.append(client)
                for client in self.clients:
                    data = client.recv(1024).decode('ascii')
                    jd_message = self.j_message(data)
                    try:
                        if jd_message[0] == "presence" and (client
                                                            in self.clients):
                            self.send_response(
                                client.name, 200,
                                "{} is currently present.".format(
                                    jd_message.client.name))
                    except:
                        self.clients.remove(client)
                        log_config.My_log()
            except Exception as ex:
                log_config.My_log()
コード例 #4
0
    def run_server(self):
        quit_server = False

        while not quit_server:
            try:
                self.s.listen(1)
                client, addr = self.s.accept()
                print('Получен запрос на соединение от %s' % str(addr))
                self.clients.append(client)
                for client in self.clients:
                    data = client.recvfrom(1024)
                    jd_message = self.j_message(data)
                    try:
                        if jd_message.action == "presence" and (
                                client in self.clients):
                            self.send_response(
                                client.name, 200,
                                "{} is currently present.".format(
                                    jd_message.client.name))
                    except:
                        self.clients.remove(client)
                        log_config.My_log()
            except Exception as ex:
                log_config.My_log()
コード例 #5
0
 def sending(self):
     message = input('Your message: ')
     make_message_json = message.encode_to_json(self)
     self.s.send(make_message_json.encode('ascii'))
     log_config.My_log()
コード例 #6
0
 def receive_data(self):
     data = None
     while data is None:
         data = self.s.recv(1024)
         log_config.My_log()
コード例 #7
0
 def run_client(self):
     while True:
         self.presence_msg()
         response = self.s.recv(1024)
         response, alert = self.receiving(response)
         log_config.My_log()
コード例 #8
0
 def run_client(self):
     while True:
         self.sending("presence")
         response = self.s.recvfrom(1024)
         response, alert = self.receiving(response)
         log_config.My_log()
コード例 #9
0
 def __init__(self, host='localhost', port=8008):
     self.s.bind((host, port))
     log_config.My_log()
コード例 #10
0
 def send_response(client, code, alert=None):
     gen_response = MessageBuilder.create_response_message(code, alert)
     gen_response_json = gen_response.encode_to_json()
     client.send(gen_response_json.encode('ascii'))
     log_config.My_log()