-
Notifications
You must be signed in to change notification settings - Fork 4
/
server.py
65 lines (55 loc) · 1.67 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import pyautogui
import socket
import asyncio
import PIL.Image, PIL.ImageFile, PIL.ImageTk
import os
import threading
from io import BytesIO
from win32api import GetSystemMetrics, NameDisplay
import dxcam
ss = dxcam.create()
s = socket.socket()
print(' > Starting server')
#get screen res
res_x = int(GetSystemMetrics(0) / 2)
res_y = int(GetSystemMetrics(1) / 2)
print(f' > Using display with resolution {GetSystemMetrics(0)} x {GetSystemMetrics(1)}, and streaming at {res_x} x {res_y}')
port = 22371
#bind to a port
s.bind(('', port))
print(f' > Server running at {port}')
print(' > Listening for connection...')
#listen for a connection
s.listen(1)
c, addr = s.accept()
print(f' > Got connection form {addr}')
#server class
class server:
size = 102400
def key_loop(self):
while True:
try:
print("key loop")
#send it
key = c.recv(512).decode()
print(key)
pyautogui.write(key)
except Exception as e:
pass
def screen_loop(self):
while True:
try:
frame = PIL.Image.fromarray(ss.grab())
frame = frame.resize((res_x, res_y))
frame_ = BytesIO()
frame.save(frame_, format="JPEG", optimize = True, quality = 25)
frame = PIL.Image.open(frame_)
frame_.seek(0)
bytes = bytearray(frame_.read())
c.send(bytes)
except Exception as e:
print(f" > Something went wrong! {e}")
def __init__(self):
threading.Thread(target=self.screen_loop).start()
server()
input()