2021年10月6日 星期三

Python-Socket傳送圖片

 Clinet 進行擷圖後存檔且將檔案傳送到Server。


Server:

 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
import socket
import time

Host = '127.0.0.1'
Port = 8000

#建立圖片檔案位置。
imagefile = open('D:\\Test' + time.strftime('%Y-%m-%d-%H-%M-%S') + '.jpg', 'wb+')
#設定IP4連結及TCP/IP連結方式。
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.bind((Host, Port))
print(Host,':'+ str(Port) + ' Wait for connection.....')
sock.listen(1)
#等待連結。
conn, ClientIp = sock.accept()
#接受Client傳來的圖片。
while True:
imagedata = conn.recv(1024)
#當資料後停止接受。
if not imagedata :
break
#將接受的資料寫入。
imagefile.write(imagedata)

print('image receive to finish')

conn.close()



Client:

 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
import socket
import pyscreenshot
import time

#擷取全螢幕畫面。
image = pyscreenshot.grab()
#image.show()
#擷圖後所存的檔案位置,檔名為目前日期。
imagefile = 'D:\\' + time.strftime('%Y-%m-%d-%H-%M-%S') + '.jpg'
image.save(imagefile, quality=100)

Host = '127.0.0.1'
Port = 8000


sendfile = open(imagefile, "rb+")

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

try:
#判斷Server是否可以連線,無法連線錯誤碼10061。
if s.connect_ex((Host, Port))==10061:
print('無法連線')
else:
#傳送圖片到Server。
while True:
imagedata = sendfile.readline(1024)
if not imagedata:
print('image transfer to finish')
break
s.sendall(imagedata)

except Exception as e:
print(f'An Error occurred:',e)

沒有留言:

張貼留言

Ubuntu-Journalctl查看系統日誌

 近期所使用Ubuntu系統24小時開著,進行跑Python程式使用,但跑個2~3天,排程就無法正常寄信,SSH連線也無法正常連線,經查看後為wifi連線問題,暫先使用腳本排程進行重開wifi。 以下為記錄Journalctl指令。 使用Journalctl來從系統日誌上查看看問...