Python实现局域网内远程电脑控制
本文介绍如何使用Python通过Socket通信实现局域网内的电脑远程控制。程序分为客户端(被控端)和服务端(控制端),客户端自动获取IPv4地址并监听端口,服务端通过指定IP建立连接后发送指令。利用os.system()执行接收到的命令,适用于简单的局域网设备管理或学习网络编程原理。
程序架构概述
该程序架构包含两个核心部分:作为被控方的客户端以及用于发送操作指令的服务端。
此项目基于局域网聊天系统改造而来,未采用复杂的GUI框架,仅使用基础的DOS窗口界面。该方案主要面向学习目的,用户也可将客户端部署于第二台电脑,通过服务端进行远程指令操作,具有一定的实用价值。
客户端启动后会自动获取并显示当前的IPv4地址,用户需利用该IP地址在服务端建立连接。执行指令的逻辑较为直接,即接收数据后通过模块进行系统命令执行。具备扩展能力的开发者还可尝试传输鼠标定位数据以实现图形化控制,尽管实现难度较大,但这仍是一个供学习参考的项目。
客户端实现
客户端代码实现如下:
import socket
import os
import psutil
# 执行接收到的命令
def send_data(data):
os.system(data)
print('[-][+][~]执行命令:[',data+']')
Database = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 获取IPv4地址
info = psutil.net_if_addrs()
wlan = info['WLAN']
def myaddr():
for i in wlan:
for myaddr in i:
if '192.168' in str(myaddr):
return myaddr
Database.bind((myaddr(),8888))
Database.listen(1)
def main():
while True: # 持续循环执行
try: # 接受数据和命令,如果出错则视为已断开连接
print(f'[#~]当前服务器IP地址为[{myaddr()}]...')
print('[#~]等待连接中...')
sed,dree=Database.accept() # 等待服务端接入
print('[+]已连接服务器.')
while True:
if sed.recv(1024).decode('utf-8') == '':
break
data = sed.recv(1024).decode('utf-8')#接受数据
send_data(data) # 发送
except:
pass
print('[-]连接已断开..\n')
if __name__ == "__main__":
main()

服务端连接与指令处理
服务端必须获取客户端输出的IP地址方可建立连接。在发送指令时,应避免使用直接覆盖当前DOS窗口的命令(如直接执行cmd),建议采用方式打开新窗口,以防止界面被意外替换。
服务端代码实现
服务端代码实现如下:
import socket
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
def main():
while True:
DATA = input('请输入指令:')
if DATA == '':
pass
else:
if len(DATA):
udp_socket.send(DATA.encode('utf-8'))
udp_socket.send(DATA.encode('utf-8'))
if __name__ == '__main__':
myaddr = input('输入要连接服务器的IP地址:')
udp_socket.connect((myaddr, 8888)) # 连接服务器
data_list = '' # 测试
udp_socket.send(data_list.encode('utf-8'))
main()连接测试与操作演示
输入客户端IP地址并回车,若无报错信息,表明连接已成功建立。

查看客户端状态,显示已连接成功,此时可通过服务端发送测试指令。

在服务端输入以打开命令提示符窗口。

回到客户端观察,可以看到cmd窗口已成功打开,证明指令执行有效。

至此,关于使用Python实现局域网控制电脑的介绍已完成。如需了解更多Python局域网控制相关内容,建议搜索本站过往文章或继续阅读后续系列教程,感谢大家的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













