python 添加远程仓库_面试

如果要做到远程控制对方主机

先编写一个客户端程序

python 添加远程仓库_Python_02

import socket

ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口

c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #链接对方使用tcp协议 对象建立
c.connect((ip,port))

data = c.recv(10240) #接收数据
print(data) #打印
c.send(b"HELLO") #发送数据给对方

c.close()

升级客户端和服务 源码 实现 循环交互

python 添加远程仓库_python_03

服务端源码

#!/usr/local/bin/python3
import socket

ip = ""   #我哪个ip开放 空表示所有ip
port = 5000 #我要开的端口

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #对象s 使用基于tcp协议的网络套接字
s.bind((ip,port)) #对象s 开始绑定ip和端口
s.listen(1) #启动监听状态

conn,addr = s.accept() #当与别人建立连接 addr变量存对方ip  conn 连接的对象
print(addr) #显示对方地址

while True:
    data = conn.recv(10240) #接收对方字符串 #如果对方不发数据会卡住
    print(data) #打印对方发来的数据
    conn.send(data)
    if data == b"byebye":
        break

conn.close()  #断开连接
s.close()    #关闭套结字

客户端源码

import socket

ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口

c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #链接对方使用tcp协议 对象建立
c.connect((ip,port))

while True:
    data = input("请输入命令:")
    data = bytes(data,encoding="utf8")
    c.send(data) #发送数据给对方
    data2 = c.recv(10240)
    print(data2)
    if data == b"byebye":
        break

c.close()

升级可以控制服务端程序

python 添加远程仓库_python 添加远程仓库_04

服务端最终源码

#!/usr/local/bin/python3
import socket
import os

ip = ""   #我哪个ip开放 空表示所有ip
port = 5000 #我要开的端口

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #对象s 使用基于tcp协议的网络套接字
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #关闭后不需要保存状态可以立即开启
s.bind((ip,port)) #对象s 开始绑定ip和端口
s.listen(1) #启动监听状态

conn,addr = s.accept() #当与别人建立连接 addr变量存对方ip  conn 连接的对象
print(addr) #显示对方地址

while True:
    data = conn.recv(10240) #接收对方字符串 #如果对方不发数据会卡住
    print(data) #打印对方发来的数据
    if data == b"byebye":
        break
    data = str(data,encoding="utf8")
    f = os.popen(data) #可以将命令的内容以读取的方式返回
    data2 = f.read()
    if data2 == "":
        conn.send(b"finish")
    else:
        conn.send(bytes(data2,encoding="utf8"))


conn.close()  #断开连接
s.close()    #关闭套结字

客户端最终代码

import socket

ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口