zoukankan      html  css  js  c++  java
  • python(39)- 网络编程socket练习

    基于tcp的套接字实现远程执行命令的操作

    #服务端
    
    import socket
    import subprocess
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    ip_port=("127.0.0.1",8080)
    phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    phone.bind(ip_port)
    phone.listen(5)
    
    while True:
        conn,addr=phone.accept()
        print(addr)
        while True:
            try:
                cmd=conn.recv(1024)
                res=subprocess.Popen(cmd.decode("utf8"),
                                     shell=True,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE)
    
    #注释掉的这么多行,是因为在linux系统下同时执行多条命令,命令中如果有对有错的话res.stderr.read()和res.stdout.read()都会有返回值。
                #err=res.stderr.read()        
                #if err:
                #   cmd_res=err
                #else:
                #    cmd_res=res.stdout.read()
                #conn.send(cmd_res)
    #修改为:
                conn.send(res.stdout.read())
                conn.send(res.stderr.read())
    
            except Exception:
                break
        conn.close()
    phone.close()
    
    #客户端
    
    import socket
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone.connect(("192.168.85.129",8080))
    while True:
        cmd=input(">>:").strip()
        if not cmd:continue
        phone.send(cmd.encode("utf8"))
        data=phone.recv(8192)        #当命令行打印的东西太长时,接收超过1024,所以这里修改为8192
        print(data.decode("utf8"))        #当服务端运行在linux系统下,为utf8;服务端在windows下运行时,为gbk
    
    phone.close()
    

    当服务端运行在Windows系统下,若客户端发送给服务端识别window系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。

    同样当服务端在linux系统下运行,若客户端发送给服务端识别linux系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。

  • 相关阅读:
    Flash影片剪辑导出视频静止的问题 被解决了!
    关于sample采样器无法改变声调的解决方法
    FL的萌新之路,开始了!
    暑假结束时
    关于Pascal调试时同时出现ntdll.dll、SIGSEGV错误的原因
    XCTF-WEB-view_source
    XCTF-MISC-如来十三掌
    XCTF-MISC-give_you_flag
    《了不起的盖茨比》【开头诗句,尼克独白】
    MiniMIPS32微处理器的流水线相关问题和暂停机制
  • 原文地址:https://www.cnblogs.com/xuyaping/p/6803732.html
Copyright © 2011-2022 走看看