Python实现局域网内远程电脑控制

雨后青山
雨后青山
发布时间:2026-10-15| 5人浏览过
原创

本文介绍如何使用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局域网控制相关内容,建议搜索本站过往文章或继续阅读后续系列教程,感谢大家的支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。