zoukankan      html  css  js  c++  java
  • Socket-实例

    import socket,os,time
    server = socket.socket()
    server.bind(("localhost",9999))
    server.listen()
    
    while True:
        conn,addr=server.accept()
        print("new conn",addr)
        while True:
            print("等待新指令")
            data =conn.recv(1024)
            if not  data:
                print("客户端已断开!")
                break
            print("执行命令:",data)
            cmd_res = os.popen(data.decode()).read()#接收字符串,执行结果也是字符串
            print("before send",len(cmd_res))
            if len(cmd_res) == 0:
                cmd_res = "cmd has no output..."
    
            conn.send(str(len(cmd_res.encode())).encode("utf-8")) #先发大小给客户端
            #time.sleep(0.5)
            client_ack =conn.recv(1024)#wait client to confirm 防止粘包
            conn.send(cmd_res.encode("utf-8"))
            print("send done")
    
    server.close()
    

     上面是服务端socket_server.py

    import socket
    client =socket.socket()
    client.connect(("localhost",9999))
    
    while True:
        cmd = input(">>:").strip()
        if len(cmd)==0:
            continue
        client.send(cmd.encode("utf-8"))
        cmd_res_size =client.recv(1024)#接收命令结果的长度
        print("命令结果大小:",cmd_res_size)
        client.send("准备好接收了,loser可以发了".encode("utf-8"))#防止粘包
        received_size=0
        received_data=b''
        while received_size < int(cmd_res_size.decode()):
            data =client.recv(1024)
            received_size +=len(data)#每次收到的有可能小于1024,所以用len判断
            received_data +=data
        else:
            print("cmd res receive done...",received_size)
            print(received_data.decode())
    client.close()
    

     上面是客户端socket_client.py

  • 相关阅读:
    spark on yarn 无法提交任务问题
    git rebase 操作撤销
    vim 删除屏蔽行
    mysql 登录远程数据库 失败
    springboot拦截器中获取配置文件值
    根据经纬度获取地址 :位置名称 区 市 省 国家 邮编
    element-ui upload组件上传
    java读写excel文件( POI解析Excel)
    easyui+themeleaf 分页查询实现
    java生成二维码
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/9129425.html
Copyright © 2011-2022 走看看