Client code:
import tkinter as tk
from tkinter.filedialog import asksaveasfilename
import tkinter.messagebox
from PIL import Image
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
def ConnectToServer():
HOST=entry.get()
PORT=65432
test=True
try:
s.connect((HOST,PORT))
except Exception as e:
tkinter.messagebox.showerror(title="Lỗi",message="Lỗi kết nối đến server")
test=False
if test:
tkinter.messagebox.showinfo(title="Thông báo",message="Đã kết nối tới server thành công")
def takeScreen():
msg="TAKEPIC"
s.sendall(bytes(msg,"utf8"))
file = open('server_image.jpg', "wb")
image_chunk = s.recv(2048)
while image_chunk:
file.write(image_chunk)
image_chunk = s.recv(2048)
file.close()
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=300)
canvas1.pack()
entry=tk.Entry()
myButton_connect=tk.Button(text="Connect",command=ConnectToServer)
myButton_TakePic = tk.Button(text="Take screenshot", command=takeScreen, font=10)
myButton_Process = tk.Button(text="Process Running", command=ProcessRunning, font=10)
myButton_Exit=tk.Button(text="Thoat",command=Thoat,font=10)
canvas1.create_window(150,50,window=entry)
canvas1.create_window(150, 100, window=myButton_TakePic) # dùng để tạo các button để click
canvas1.create_window(150, 150, window=myButton_Process)
canvas1.create_window(250,50,window=myButton_connect)
canvas1.create_window(150,200,window=myButton_Exit)
root.mainloop()
Server code:
def pic():
myScreenshot=pyautogui.screenshot()
save_path=asksaveasfilename()
myScreenshot.save(save_path+"_capture1.png")
return save_path+"_capture1.png"
HOST=''
PORT=65432
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen()
while True:
conn,addr=s.accept()
while True:
data=conn.recv(1024).decode("utf8")
if data=="TAKEPIC":
path=pic()
im=Image.open(path)
im.show()
file=open(path,'rb')
img_data=file.read(2048)
while img_data:
conn.send(img_data)
img_data=file.read(2048)
file.close()
elif data=="app running":
Process(conn)
elif data=="QUIT":
break;
break;
s.close()
print("Server ngat ket noi")
Sau khi em nhấn nút “Take screenshot” xong thì chương trình bên server nó vẫn thực hiện chụp ảnh và lưu được, sau đó nó gửi cho client vẫn thành công( vì em đã mở ảnh đó lên được).
Nhưng vẫn đề là nó xuất hiện 1 hộp thoại như này:
và làm chương trình của em treo. Khi em nhấn nút close trên hộp thoại con thì xuất hiện
Nếu em chọn Try to restore … thì:
bên Server sẻ xuất hiện lỗi:
bên client sẻ xuất hiện lỗi:
Nếu em chọn Close the program thì chỉ bên client mới báo lỗi như trên còn server thì k
Mong mọi người chỉ dẫn cho em. Em mới học python ạ.