zoukankan      html  css  js  c++  java
  • 2020python作业——scoket编程(一)

    @2020-4-20

    作业:
    1、编写远程执行命令的CS架构软件

    # 服务端
    
    # _*_coding:utf-8_*_
    
    __author__ = 'cc'
    
    from socket import *
    import subprocess
    
    ip_port = ('127.0.0.1', 1080)
    bufsize = 1024
    
    udp_server = socket(AF_INET, SOCK_DGRAM)
    udp_server.bind(ip_port)
    
    while True:
        # 收消息
        cmd, addr = udp_server.recvfrom(bufsize)
        print('用户命令----->', cmd)
    
        # 逻辑处理
        res = subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE,
                               stdout=subprocess.PIPE)
        stderr = res.stderr.read()
        stdout = res.stdout.read()
    
        # 发消息
        udp_server.sendto(stderr, addr)
        udp_server.sendto(stdout, addr)
    udp_server.close()
    服务端
    # 客户端
    from socket import *
    
    ip_port = ('127.0.0.1', 1080)
    bufsize = 1024
    
    udp_client = socket(AF_INET, SOCK_DGRAM)
    
    while True:
        msg = input('>>: ').strip()
        udp_client.sendto(msg.encode('utf-8'), ip_port)
    
        data, addr = udp_client.recvfrom(bufsize)
        print(data.decode('utf-8'), end='')
    客户端

    2、加上通信循环与链接循环之后的tcp通信代码 

    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    import socket
    ip_port=('127.0.0.1',8081)#电话卡
    BUFSIZE=1024
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #买手机
    s.bind(ip_port) #手机插卡
    s.listen(5)     #手机待机
    
    
    while True:                         #新增接收链接循环,可以不停的接电话
        conn,addr=s.accept()            #手机接电话
        # print(conn)
        # print(addr)
        print('接到来自%s的电话' %addr[0])
        while True:                         #新增通信循环,可以不断的通信,收发消息
            msg=conn.recv(BUFSIZE)             #听消息,听话
    
            # if len(msg) == 0:break        #如果不加,那么正在链接的客户端突然断开,recv便不再阻塞,死循环发生
    
            print(msg,type(msg))
    
            conn.send(msg.upper())          #发消息,说话
    
        conn.close()                    #挂电话
    
    s.close()                       #手机关机
    服务端-升级版
    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    import socket
    ip_port=('127.0.0.1',8081)
    BUFSIZE=1024
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    s.connect_ex(ip_port)           #拨电话
    
    while True:                             #新增通信循环,客户端可以不断发收消息
        msg=input('>>: ').strip()
        if len(msg) == 0:continue
        s.send(msg.encode('utf-8'))         #发消息,说话(只能发送字节类型)
    
        feedback=s.recv(BUFSIZE)                           #收消息,听话
        print(feedback.decode('utf-8'))
    
    s.close()                                       #挂电话
    客户端-升级版
  • 相关阅读:
    NDK开发之ndk-build命令详解
    NDK开发之Application.mk文件详解
    Unity3D自己常用代码
    投资股权众筹项目,至少需要关注6个方面
    2015,我的投资理财策略(股权众筹+P2P网贷+活期理财)
    2015,我的投资理财策略(股权众筹+P2P网贷+活期理财)
    关于weight属性使用的一些细节
    xtu summer individual 5 F
    BNUOJ 1268 PIGS
    BNUOJ 2105 Distance Queries
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/12739783.html
Copyright © 2011-2022 走看看