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,‘\n\n\n‘,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:\E\semantic\%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:\E\semantic/%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()

  

 

时间: 2024-10-10 21:33:35

socketserver 分块记录的相关文章

简单高效的分块记录的实现

在定长记录采用数据库读写并非最佳解决方案一文中,介绍了不管文件中记录数据为多少,只要按照文中介绍的方法存储,对于文件中任意1条记录数据,在读缓冲内存恒定不变的情况下,最多只需要读文件1次,而且定位记录的算法也超级简单,只需做1次除法运算和1次求余运算.今天我在这里介绍一下它的C++实现方法. 1.写记录 [cpp] view plain copy #ifndef _WRITE_RECORD_H #define _WRITE_RECORD_H #include <qglobal.h> #incl

poj 1141 Brackets Sequence 区间dp,分块记录

Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35049   Accepted: 10139   Special Judge Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a regular sequence. 2. If S is a r

定长记录采用数据库读写并非最佳解决方案

对于有些应用场合如仪器仪表的采样数据,不需要对数据排序.插入和修改,只需要对数据写和读操作,在这种情况下,使用数据库来存取这样的记录数据,未必是最佳的选择,本文根据工作实践,采用文件的分块记录的方法,来处理采样这样的定长记录数据,实践证明,通过文件的分块存储方法,比数据库存储方法读写速度更快,尤其是在处理大批量的记录数据的读写的时候,这种速度上的优势更为显著.下面是分块记录的具体实现方法: 首先,假设我们的记录数据为:记录id号,电流,电压,温度,电阻,用结构体表示为: [html] view

Chromium网页Layer Tree绘制过程分析

网页绘图表面创建完成之后,调度器就会请求绘制CC Layer Tree,这样网页在加载完成之后就能快速显示出来.通过CC Layer Tree可以依次找到Graphics Layer Tree.Render Layer Tree和Render Object Tree.有了Render Object Tree之后,就可以执行具体的绘制工作了.接下来我们就分析网页CC Layer Tree的绘制过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! CC La

Chromium网页GPU光栅化原理分析

在前面一篇文章中,我们分析了网页分块的光栅化过程.根据Chromium的启动选项,网页分块有可能使用GPU来执行光栅化操作,也有可能使用CPU来执行光栅化操作.不管是使用GPU,还是CPU,光栅化操作最终都是统一通过调用Skia图形库提供的绘图接口完成的.如果使用GPU来执行光栅化操作,那么当它在调用绘图接口的时候,实际上是在执行相应的OpenGL命令.本文接下来就详细分析GPU光栅化的实现原理. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 网页分块的

基于大规模RDF图的关键字查询

1. 基础知识 RDF图:RDF图是由三元组(subject, predicate, object)组成的有向图,subject通过predicate指向object,如图1-1所示为一个RDF图.通常用三元组的数量表示RDF图的大小. 图1-1 RDF图 RDF压缩图:基于RDF图的关键字查询先将图进行压缩为图G=(V, E).其中节点V包括RDF图中的实体.姓名(标签).类型信息,边E为RDF中实体之间的关系.图1-1所示RDF压缩图如图1-2所示. 图1-2 压缩图 下文中出现的图均为压缩

Web Service 附件技术的发展及演变

Web Service 通常将业务数据封装在 SOAP 主体或者 SOAP 消息附件中进行传输,这些附件往往采用 Base64 编码二进制方式进行封装,这将大大增加待传输的数据量,消耗比较长的编码时间和传输时间.随着 SOA 以及 Web Service 技术的广泛采用,由于网络带宽,延时的影响以及内存大小的限制,越来越多的应用对 Web Service 附件传输方式以及传输效率提出了更高的要求. 引言 本文对 Web Service 附件技术及其相关开发工具进行了总结,详细介绍了 Web Se

干货 | 公有云存储技术分享

公有云是PP视频核心的文件存储服务,目前正在为苏宁云.苏宁体育等部门提供后台支撑.本文就  "swift分布式存储"."项目架构". "文件上传流程"."上传功能"四个方面进行介绍. 一.swift分布式存储 什么是swift? Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack 开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服

CodeChef FNCS (分块+树状数组)

题目:https://www.codechef.com/problems/FNCS 题解: 我们知道要求区间和的时候,我们用前缀和去优化.这里也是一样,我们要求第 l 个函数到第 r 个函数 [l, r] 的函数和,那么我们可以用 sum[r] - sum[l-1] 来求得. 由于这个数据量有点大,所以我们将函数分块. 例如样例: 1 3 有5个函数,那么我们分成3块.{ [1 3] , [2 5] }, { [4 5], [3 5] }, { [1 2] }.每一块对应都有一个sum ,这时如