国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - 如何將服務器上的python代碼通過QQ發送回傳信息(附實現方法)

如何將服務器上的python代碼通過QQ發送回傳信息(附實現方法)

2020-09-12 17:16yihua_Leo 編程技術

這篇文章主要介紹了我將服務器上的python代碼通過QQ發送回傳信息(附實現方法),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文介紹我使用QQ得到服務器回傳python代碼的探索歷程,面向的對象是對計算機網絡有一定了解的讀者。期待有興趣的人和我一起探討!

需求來源

最近,我在跑一些數據量巨大的代碼。代碼在本地一運行,CPU就占滿了,代碼運行時間又久,因此這段時間根本用不了電腦,這對疫情在家的大學生很難受。把代碼放服務器吧,又不知道什么時候能跑完,這讓我很不爽。于是,我希望服務器端的代碼能給我一個不錯的反饋,由此我選擇了QQ交互方法。

硬件工具

本地電腦一臺,服務器一臺(如果你只是想嘗試一下,而沒有服務器,可以使用 VMware 虛擬機)

探索歷程

首先,我使用的無界面CentOS服務器上是沒有辦法運行QQ的,因此想要實現交互,應該先把服務器上的信息傳送到本地電腦,再由本地電腦發送給QQ,這樣我就可以收到消息了。

那么就將目標分割為兩個任務了,分別為:

  • 本地電腦給QQ發信息
  • 服務器與本地電腦信息交互

接下來就給大家說明我是怎么實現這兩步的:

本地電腦給QQ發信息

主要原理:通過 win32 API, 將python信息賦給剪切板,粘貼到QQ聊天框中,最后模擬按 “Enter” 鍵,發送消息1。
代碼如下:

?
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
import win32gui
import win32con
import win32clipboard as w
 
 
class SendMsg:
 """
 
 這是一個用于將信息發送到QQ的類, 使用方法為 :
 SendMsg("收信人QQ昵稱", "信息").sendmsg()
 注意一點,收信人的QQ聊天窗口要在屏幕上,不能最小化或被掩蓋。
 
 """
 
 def __init__(self, receiver, msg):
 self.receiver = receiver
 self.msg = msg
 self.set_text()
 
 # 設置剪貼版內容
 def set_text(self):
 w.OpenClipboard()
 w.EmptyClipboard()
 w.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
 w.CloseClipboard()
 
 # 發送消息
 def sendmsg(self):
 qq = win32gui.FindWindow(None, self.receiver)
 win32gui.SendMessage(qq, win32con.WM_PASTE, 0, 0)
 win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
 
 
if __name__ == '__main__':
 SendMsg("一花一世界", "Hello, world").sendmsg()

效果如圖所示:

如何將服務器上的python代碼通過QQ發送回傳信息(附實現方法)

注意:

1、python 關于 win32 的包,下載方式為:

?
1
pip install pypiwin32

2、QQ有兩種發送消息的模式,一種是"Enter",一種是"Ctrl+Enter"。這里要選擇"Enter"模式。

服務器與本地電腦信息交互

我們已經完成了本地電腦給QQ發信息的操作,現在只需要完成服務器與本地電腦信息的交互,就可以讓本地電腦根據服務器的指令發送QQ信息了。
如何讓服務器和本地電腦通信呢?經過一些思考,我選擇用Socket2。使用Socket的話,就要解決IP問題,因為本地電腦的IP不是公網IP,我們需要解決端口映射問題,將本地電腦的IP映射到公網!
考慮到不一定有路由器,我使用了一款軟件路由俠,該軟件在免費的狀態下,一個月可以有一個G的流量進行端口映射,因為我們主要用于小段文字傳輸,這點流量已經足夠。該軟件也操作簡單,我不過多介紹。
本地電腦開放的端口為8080端口,經過路由俠的端口映射后,端口變為yihuahuahua.e2.luyouxia.net:30985
因為我們只用做單向通信,所以服務器的IP不重要。
我們首先測試一下Socket功能,讓服務器給本地電腦發一個"Hello world"
代碼如下:

本地電腦端代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from socket import *
 
HOST = ''
PORT = 8080
BUFSIZ = 1024
ADDR = (HOST, PORT)
 
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
 
while True:
 print('waiting for connection...')
 tcpCliSock, addr = tcpSerSock.accept()
 print('...connnecting from:', addr)
 
 while True:
 data = tcpCliSock.recv(BUFSIZ)
 if not data:
 break
 print(data.decode('utf-8'))
 tcpCliSock.close()
tcpSerSock.close()

服務器端代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
from socket import *
 
HOST = 'yihuahuahua.e2.luyouxia.net'
PORT = 30985
BUFSIZ = 1024
ADDR = (HOST, PORT)
 
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
 
output_str = "Hello world!"
tcpCliSock.send(output_str.encode())
tcpCliSock.close()

注意:在進行Socket通信時,要注意開放端口!!!

將功能綜合

這里規定一個任務:計算1加1的值,并返回計算時間,將上述功能綜合后,代碼如下:
本地電腦端代碼

?
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
from socket import *
import win32gui
import win32con
import win32clipboard as w
 
 
class SendMsg:
 """
 
 這是一個用于將信息發送到QQ的類, 使用方法為 :
 SendMsg("收信人QQ昵稱", "信息").sendmsg()
 注意一點,收信人的QQ聊天窗口要在屏幕上,不能最小化或被掩蓋。
 
 """
 
 def __init__(self, receiver, msg):
 self.receiver = receiver
 self.msg = msg
 self.set_text()
 
 # 設置剪貼版內容
 def set_text(self):
 w.OpenClipboard()
 w.EmptyClipboard()
 w.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
 w.CloseClipboard()
 
 # 發送消息
 def sendmsg(self):
 qq = win32gui.FindWindow(None, self.receiver)
 win32gui.SendMessage(qq, win32con.WM_PASTE, 0, 0)
 win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
 
 
if __name__ == '__main__':
 HOST = ''
 PORT = 8080
 BUFSIZ = 1024
 ADDR = (HOST, PORT)
 
 tcpSerSock = socket(AF_INET, SOCK_STREAM)
 tcpSerSock.bind(ADDR)
 tcpSerSock.listen(5)
 
 while True:
 tcpCliSock, addr = tcpSerSock.accept()
 
 while True:
 data = tcpCliSock.recv(BUFSIZ)
 if not data:
 break
 output_str = data.decode('utf-8')
 SendMsg("一花一世界", output_str).sendmsg()
 tcpCliSock.close()
 tcpSerSock.close()

服務器端代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from socket import *
import time
HOST = 'yihuahuahua.e2.luyouxia.net'
PORT = 30985
BUFSIZ =1024
ADDR = (HOST,PORT)
 
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
start = time.time()
count = 1 + 1
end = time.time()
output_str = "結果為" + str(count) + " 消耗時間" + str(int(end - start)) + "秒"
tcpCliSock.send(output_str.encode())
tcpCliSock.close()

運行結果:

如何將服務器上的python代碼通過QQ發送回傳信息(附實現方法)

美滋滋。

改進方向與探索

目前已知的缺陷有:Socket第一次通信有概率收不到消息,第二次就好了…希望有大佬在評論區指出我的不足。

這個版本只能實現單方面信息傳送,如果想實現雙向的,我思考的一個思路是通過 酷QAir的QQ機器人 加上 CQHTTP3 插件配合nonebot庫4來實現。不過我的需求已經實現了,暫時懶得動手了,有緣再探索吧。

https://www.cnblogs.com/hwj2019/p/11552055.html ??

https://blog.csdn.net/su_bao/article/details/80380465 ??

https://github.com/richardchien/coolq-http-api ??

https://nonebot.cqp.moe/guide/getting-started.html ??

 總結

到此這篇關于我將服務器上的python代碼通過QQ發送回傳信息(附實現方法)的文章就介紹到這了,更多相關python qq發送回傳信息內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_40577941/article/details/106065267

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产在线不卡一区 | 性毛片| 99精品欧美一区二区三区综合在线 | 精品国产仑片一区二区三区 | 亚洲成人中文字幕 | 中文字幕不卡在线观看 | 国产精品亚洲视频 | 亚洲高清视频在线 | 日韩精品免费视频 | 日韩精品在线视频观看 | 国产99久久 | 亚洲喷水 | 中国女人真人一级毛片 | 久久69精品久久久久久久电影好 | 国产综合精品一区二区三区 | 中文字幕精品一区二区三区精品 | 中文字幕 日韩有码 | 亚洲一区二区三区蜜桃 | 精久久 | 国产精品久久国产精品 | 欧美日韩一区二区三区免费视频 | 欧美一区二区在线视频 | 九九热视频在线 | 日韩在线视频观看 | 俺去俺来也www色官网cms | 午夜精品视频 | 成人av网站在线观看 | 国产精品入口在线观看 | 成人免费视频在线观看 | 成人日韩在线观看 | 国产综合精品一区二区三区 | 日本一级淫片免费看 | 日本中文字幕久久 | 久久久久一区二区三区 | 亚洲性在线 | 亚洲色图88 | 亚洲精品国产一区 | 一区二区在线 | 欧美日韩精品电影 | 亚洲国产aⅴ成人精品无吗 成人午夜视频在线观看 | 国产精品久久久久久久久久久久久久 |