• socketserver 分块记录


    网络编程
    Socket(TCP,IP)套接字
     
    服务端
        运行起来,
     
    客户端
    客户端
    客户端
    客户端
     
    服务端:
    import socket
     
    sk = socket.socket()
    #绑定端口号
    sk.bind(('127.0.0.1',9999,))
    #接收客户请求
    sk.listen(5)
     
    #链接客户端地址信息
    while True:
        #
        conn,address = sk.accept()
        conn.sendall(bytes('老男孩',encoding='utf-8'))
        while True:
            ret_bytes = conn.recv(1024)
            ret_str = str(ret_bytes,encoding='utf-8')
            conn.sendall(bytes('你好',encoding='utf-8'))
            print(ret_str)
            break
        print(conn,'
    
    
    ',address)
     
     
    客户端
    import socket
     
    obj = socket.socket()
     
    obj.connect(('127.0.0.1',9999,))
     
    #等待接受服务器消息
    r = obj.recv(1024)
    print(str(r,encoding='utf-8'))
     
    obj.sendall(bytes('呵呵',encoding='utf-8'))
     
    r1 = obj.recv(1024)
    print(str(r1,encoding='utf-8'))
     
    obj.close()
     
    

      

    文件传输
    服务端
    import socket
     
    sk = socket.socket()
    #绑定端口号
    sk.bind(('127.0.0.1',9999,))
    #接收客户请求
    sk.listen(5)
     
    #链接客户端地址信息
    conn,address = sk.accept()
     
     
    file_name = conn.recv(1024)
    str_file_name = str(file_name,encoding = 'utf-8')
    r = 0
    f = open('D:Esemantic\%s'%str_file_name,'wb')
    while True:
        r += 1
        print(r)
        ret_bytes = conn.recv(1024)
        f.write(ret_bytes)
        f.flush()
        if ret_bytes:
            pass
        else:
            print('ok')
            break
     
     
    客户端
     
     
    import time,os
    time.sleep(3)
    import socket
    obj = socket.socket()
    obj.connect(('127.0.0.1',9999,))
     
     
    path_name  = 'D:e同步文件桌面 EXT/123.xlsx'
    file_name = os.path.basename(path_name)
    obj.sendall(bytes(file_name,encoding='utf-8'))
     
    q = 0
    with open(path_name,'rb') as f:
     
        for i in f:
            q += 1
            print(q)
            obj.sendall(i)
     
    obj.close()
     
    

     

    socketserver多进程服务器:
        并发处理多个客户请求
        使用方法:
            1,创建类,必须继承
            2,handle方法
            3,server.serve_forever()
     
    import socket,socketserver
     
    class myserver(socketserver.BaseRequestHandler):
        def handle(self):
     
            conn = self.request
            conn.sendall(bytes('hello',encoding='utf-8'))
            ret = conn.recv(1024)
            ret_str = str(ret,encoding='utf-8')
            print(ret_str)
     
     
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),myserver)
        server.serve_forever()
    

      

    socketserver 服务器多进程 文件传输
     
    服务器
    import socket,socketserver
     
    class myserver(socketserver.BaseRequestHandler):
        def handle(self):
            conn = self.request
            file_name = conn.recv(1024)
            tr_file_name = str(file_name,encoding='utf-8')
            f = open('D:Esemantic/%s'%tr_file_name,'wb')
            conn.sendall(bytes('腻2',encoding='utf-8'))
            r = False
            ww = 0
            while not r:
                data = conn.recv(1024)
                f.write(data)
                if data:
                    ww += 1
                    print(ww)
                else:
                    r = True
     
     
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),myserver)
        server.serve_forever()
     
    客户端
    import time,os
    time.sleep(2)
    import socket
    obj = socket.socket()
    obj.connect(('127.0.0.1',9999,))
    path_name  = 'D:E同步文件装修Banner产品抠图/用品2.psd'
    file_name = os.path.basename(path_name)
    obj.sendall(bytes(file_name,encoding='utf-8'))
    print(str(obj.recv(1024),encoding='utf-8'))
     
    q = 0
    with open(path_name,'rb') as f:
        for i in f:
            q += 1
            print(q)
            obj.sendall(i)
     
    obj.close()
    

      

     

  • 相关阅读:
    深度讲解Go语言-学习笔记
    vagrant常用命令
    CentOS7 安装Python虚拟环境 virtualenvwrapper
    《Android开发艺术探索》读书笔记——Cha3.2.3改变布局参数实现View的滑动
    Map接口的实现类 Map的区别
    Java多线程之内存可见性和原子性操作 一 synchronized
    LeetCode 153. Find Minimum in Rotated Sorted Array
    LeetCode 64. Minimum Path Sum
    实现线程同步的几种方式
    IOC的底层原理
  • 原文地址:https://www.cnblogs.com/cloniu/p/6253135.html
Copyright © 2020-2023  润新知