zoukankan      html  css  js  c++  java
  • python socket实例

    想在一问一答基础上加上client端向server端发 shell命令 返回命令结果

    server端

    import socket
    import subprocess
    sk=socket.socket()
    # print(sk)
    sk.bind(('127.0.0.1',8000))
    sk.listen(3)

    while True:
    conn, addr = sk.accept()
    while True:
    try:
    data = conn.recv(1024)
    a=subprocess.Popen(str(data,'utf8'),shell=True,stdout=subprocess.PIPE) #data.decode('utf8)
    # data=str(a.stdout.read(), 'gbk')
    # print(a.stdout.read())
    data_send=a.stdout.read() #二进制的数据
    data_send_len=bytes(str(len(data_send)),'utf8') #在这应该算二进制的长度 注意!
    #发送数据长度
    conn.send(data_send_len)
    print(data_send_len)
    conn.send(data_send)
    except Exception :
    break
    if not data:
    break

    # inp=input('>>>>>>')
    # conn.send(bytes(inp,'utf8'))
    conn.close()
    sk.close()



    client端
    import socket
    sk=socket.socket()
    sk.connect(('127.0.0.1',8000))
    while True:
    inp=input('>>>>>>>')
    if inp=='q':
    print('我退了')
    break
    sk.send(bytes(inp,'utf8'))
    data_len=sk.recv(1024) #二进制
    print(int(str(data_len,'utf8')))
    data=b''
    while len(data) !=int(str(data_len,'utf8')):
    recv_current=sk.recv(1024)
    data+=recv_current
    # print(str(data, 'gbk'))
    print(str(data,'gbk'))
    # print(data)
    sk.close()
    # print(sk)


    写出漂亮的博客就是为了以后看着更方便的。
  • 相关阅读:
    牛逼的博客地址
    动画的keyPath
    跳转到系统设置的各种配置
    UITextField只允许输入正数
    冒泡排序
    number类型的数组
    正则表达式
    C中常用的数学函数
    利用运行时,查看一个类的所有子类
    玉蟾宫(悬线法)
  • 原文地址:https://www.cnblogs.com/zhaowei5/p/9287607.html
Copyright © 2011-2022 走看看