如何将服务器上的python代码通过QQ发送回传信息(附实现方法)
2020-05-12 11:58:53 来源:易采站长站 作者:王旭
考虑到不一定有路由器,我使用了一款软件路由侠,该软件在免费的状态下,一个月可以有一个G的流量进行端口映射,因为我们主要用于小段文字传输,这点流量已经足够。该软件也操作简单,我不过多介绍。
本地电脑开放的端口为8080端口,经过路由侠的端口映射后,端口变为yihuahuahua.e2.luyouxia.net:30985
因为我们只用做单向通信,所以服务器的IP不重要。
我们首先测试一下Socket功能,让服务器给本地电脑发一个"Hello world"
代码如下:
本地电脑端代码
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()
服务器端代码
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的值,并返回计算时间,将上述功能综合后,代码如下:
本地电脑端代码
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()
服务器端代码
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()
暂时禁止评论













闽公网安备 35020302000061号