python中readline(size)_限制Python中readline的长度

我意识到你的编辑正在澄清你想要的是一种实现目标的内在方法。但是我不知道有什么东西可以帮助您对readline方法进行细粒度控制。但我想我可能会包括一个例子,它确实用一个生成器和一个拆分来实现编码方法。。。只是为了好玩。在

基于那个读者:

服务器.pyimport socket

MAXLINE = 100

def linesplit(sock, maxline=0):

buf = sock.recv(16)

done = False

while not done:

# mid line check

if maxline and len(buf) > maxline:

yield buf, True

if "\n" in buf:

(line, buf) = buf.split("\n", 1)

err = maxline and len(line) > maxline

yield line+"\n", err

else:

more = sock.recv(16)

if not more:

done = True

else:

buf = buf+more

if buf:

err = maxline and len(buf) > maxline

yield buf, err

HOST = ''

PORT = 50007

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((HOST, PORT))

s.listen(1)

conn, addr = s.accept()

print 'Connected by', addr

for line, err in linesplit(conn, MAXLINE):

if err:

print "Error: Line greater than allowed length %d (got %d)" \

% (MAXLINE, len(line))

break

else:

print "Received data:", line.strip()

conn.close()

客户端.py

^{pr2}$

输出Connected by ('127.0.0.1', 57912)

Received data: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Received data: xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Received data: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

...

Received data: xxxxxxxxxxx

Received data: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Error: Line greater than allowed length 100 (got 102)

服务器读取它接收到的数据,并在组装一条线后不断检查该行的长度。如果行在任何时候超过指定的数量,它将返回一个错误代码。我很快就把它放在一起了,所以我确信可以对检查进行更多的清理,并且可以更改读取缓冲区的数量,以解决在消耗过多数据之前,您希望以多快的速度检测长行。在上面的输出示例中,我只比允许的多了2个字节,它就停止了。在

客户机只发送随机长度的数据,换行50/50。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值