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)
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")
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")
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")
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
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()
def start_stream(self): m = message() mes = m.encode("server", "1 " + self.username + " has started a streaming.") self.tcp_socket.send(mes)