diff options
author | AL-LCL <alvin@alvinhavel.com> | 2023-05-19 11:06:25 +0200 |
---|---|---|
committer | AL-LCL <alvin@alvinhavel.com> | 2023-05-19 11:06:25 +0200 |
commit | 18a3d3bc354e667bc58385e59745b82b53695139 (patch) | |
tree | fef56722868ae768b16382aae2f3559ec4bbf370 /Modules/Clients/talk.py |
Diffstat (limited to 'Modules/Clients/talk.py')
-rw-r--r-- | Modules/Clients/talk.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Modules/Clients/talk.py b/Modules/Clients/talk.py new file mode 100644 index 0000000..cc8d181 --- /dev/null +++ b/Modules/Clients/talk.py @@ -0,0 +1,62 @@ +import pyaudio +import socket +import pickle +import zlib + +from Specific.encrypt import Encryption +from sys import exit + + +def Talk(ip, port, encoding): + try: + headersize = 10 + new_msg = True + msg_len = 0 + full_msg = b'' + msg = b'next' + + e = Encryption() + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((ip, port)) + + + CHUNK = 81920 + FORMAT = pyaudio.paInt16 + CHANNELS = 2 + RATE = 44100 + p = pyaudio.PyAudio() + stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=False, output=True, frames_per_buffer=CHUNK) + + while True: + try: + talk_msg = s.recv(81920) + + if new_msg: + msg_len = int(talk_msg[:headersize]) + new_msg = False + + full_msg += talk_msg + + if len(full_msg)-headersize == msg_len: + data = e.do_decrypt(full_msg[headersize:]) + data = zlib.decompress(data) + data = pickle.loads(data) + + stream.write(data) + + real_msg = pickle.dumps(msg) + real_msg = zlib.compress(real_msg, 1) + real_msg = e.do_encrypt(real_msg) + final_msg = bytes(f'{len(msg):<{headersize}}', encoding) + msg + s.send(final_msg) + + new_msg = True + msg_len = 0 + full_msg = b'' + except: + stream.stop_stream() + stream.close() + p.terminate() + exit(0) + except: + exit(0)
\ No newline at end of file |