zoukankan      html  css  js  c++  java
  • 网络编程

    一、md5验证

    import hashlib
    m=hashlib.md5()
    m.update(b"test")
    print (m.hexdigest())
    结果:098f6bcd4621d373cade4e832627b4f6

    二、客户端代码
      
    #客户端
    import socket
    client=socket.socket() #生成socket连接对象
    client.connect(("localhost",6969))
    while True:
    msg=input(">>>:")
    if not msg:
    continue
    if msg.startswith("get"):
    client.send(msg.encode("utf-8")) #发送命令到服务端 ;
    cmd_res_size=client.recv(1024) #接收文件的大小;
    print ("文件大小为:",cmd_res_size)
    client.send(b"ready to recv file..")
    cmd_size=0
    cmd_data=b''
    filename=msg.split()[1]
    f=open(filename+".new","wb")
    while cmd_size!=int(cmd_res_size.decode()):
    data=client.recv(1024)
    cmd_size+=len(data)
    f.write(data)
    else:
    print ("cmd received done !",cmd_size)
    print (cmd_data.decode())
    f.close()
    client.close()
    三、服务端
      
    #服务端
    import socket,os
    so_server=socket.socket()
    so_server.bind(("localhost",6969))
    so_server.listen()
    print ("等电话!")
    while True: #实现多个链路连接;
    conn,addr=so_server.accept()
    print ("new connect",addr)
    while True:
    print ("等待新指令!")
    data = conn.recv(1024)
    if not data:
    print("客户端已经断开")
    break
    cmd,filename=data.decode().split()
    if os.path.isfile(filename):
    f=open(filename,"rb")
    file_size=str(os.stat(filename).st_size)
    print (file_size.encode())
    conn.send(file_size.encode())
    conn.recv(1024) #wait for ack;
    for line in f:
    conn.send(line)
    f.close()
    so_server.close()

    8.文件md5较验.
  • 相关阅读:
    [转]IUnkown生命周期管理
    [转] com 基本数据类型
    Centos 7 修改开机等待时间 Alex
    乌班图的安装常用命令 Alex
    Ubuntu切换root用户 Alex
    乌班图开启关闭防火墙 Alex
    Ubuntu远程root用户登录 Alex
    Centos 8 更改为阿里云源 Alex
    LVS调度之搭建NAT模型实现 Alex
    解决挂载mount: wrong fs type, bad option, bad superblock on Alex
  • 原文地址:https://www.cnblogs.com/wulafuer/p/10185970.html
Copyright © 2011-2022 走看看