示例#1
0
    def sendText(self):
        m = message()
        mes = m.encode(self.username, self.text_entry.get())
        #mes = bytes(self.text_entry.get(), 'utf-8')
        try:

            self.tcp_socket.send(mes)
            print("Message Sent")
        except:
            print("Failed to send message")
        """
        try:
            response = self.tcp_socket.recv(4096)
            if(response == b'received'): 
                print("response received")
        except:
            print("Failed to receive Response")
        """
        #auto scroll when text is full
        self.is_text_full = self.chat_room.yview()[1] == 1.0
        self.chat_room.insert(
            END, self.username + " : " + self.text_entry.get() + "\n")
        if self.is_text_full:
            self.chat_room.see("end")
        self.text_entry.delete(0, END)
示例#2
0
    def stream_room(self, host):
        print("create strem room")
        stream_frame = Tk()
        self.stream = stream(stream_frame, self.username, self.ADDR[0],
                             self.ADDR[1] + 1, host)
        m = message()
        mes = m.encode("server", " ")
        self.tcp_socket.send(mes)
        #stream_frame.destroy()

        print("streaming done")
示例#3
0
    def close(self):

        m = message()
        mes = m.encode("server", ":")

        self.tcp_socket.send(mes)
        print("close message sent")

        m = "" + self.username + " closed"
        m = bytes(m, 'utf-8')
        #self.closing_tcp_socket.send(m)

        self.frame.destroy()

        print("finished")
示例#4
0
    def update_chat_room(self):
        self.chat_room.insert(END, "You have entered the chat room")
        #TODO:
        while True:
            #print("1")

            mes = self.tcp_socket.recv(4096)

            if (mes == b''):
                break
            m = message()
            m.decode(mes)
            if (m.get_username() == "server" and m.get_message() == ":"):
                break
            elif (m.get_username() == "server" and m.get_message() == " "):
                self.chat_room.insert(END, "Streaming is closed.\n")

            elif (m.get_username() == "server"):

                code = m.get_message().split(':', 1)
                #print(code[0])
                #print(code[1])
                if (code[0] == "2"):
                    threading.Thread(target=self.stream_room,
                                     args=(True, )).start()

                    #print("enter")
                    self.chat_room.insert(END, code[1] + "\n")
                elif (code[0] == "3"):
                    self.chat_room.insert(END, code[1] + "\n")
                else:

                    self.chat_room.insert(END, m.get_message() + "\n")
                    #TODO: ADD a link to join the stream

            else:
                #s = mes.decode("utf-8")
                self.chat_room.insert(
                    END,
                    m.get_username() + " : " + m.get_message() + "\n")
                self.text_entry.delete(0, END)

        try:
            self.tcp_socket.close()
            print("finished")
        except:
            print("Failed to close the tcp socket.")
        print("done")
示例#5
0
    def send_message(self, num, mes):
        if (mes != b''):
            m = message()
            m.decode(mes)

            if (m.get_username() == "server" and m.get_message() == ":"):
                self.clients_socket[num][1].send(mes)
                #self.closing_socket[num] = None
                self.Host = False
                self.clients_socket[num] = None
                print("One client log out")
                self.print_clients()
                #self.print_closing()
                #mes = b'User has quit the room'
            elif (m.get_username() == "server" and m.get_message() == " "):
                self.clients_socket[num][1].send(mes)
                print("streaming closed")
                print(mes)
                self.Host = False
            else:

                allow = True
                if (m.get_username() == "server"):

                    code = m.get_message().split(' ', 1)
                    if (code[0] == "1"):
                        if (self.Host == False):
                            self.Host = True
                            self.Host_num = num
                            c = code[1].split(':', 1)
                            self.clients_socket[num][1].send(
                                b'server 2:You start streaming.')
                            #TODO: Establishing a thread to receive video and audio frames
                            threading.Thread(
                                target=self.udp_connection).start()
                        else:
                            self.clients_socket[num][1].send(
                                b'server 3:Someone in the chatroom is streaming.'
                            )
                            allow = False
                #try:

                i = 0
                while (i < self.Size and allow == True):
                    if (i != num and self.clients_socket[i] != None):
                        self.clients_socket[i][1].send(mes)
                    i += 1
示例#6
0
    def tcp_connection(self):
        while True:
            c = self.tcp_socket.accept()

            m = c[0].recv(4096)
            m = m.decode("utf-8")
            self.clients_socket.append((m, c[0]))

            #self.clients_socket.append(c[0])
            threading.Thread(target=self.recv_message,
                             args=(self.Size, )).start()
            o = message()
            mes = o.encode("server", m + " has enter the chat room")
            self.send_message(self.Size, mes)

            addr = c[1]
            self.clients_address.append(addr)
            self.Size += 1
            self.print_clients()
示例#7
0
 def start_stream(self):
     m = message()
     mes = m.encode("server",
                    "1 " + self.username + " has started a streaming.")
     self.tcp_socket.send(mes)