符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
data, addr = s.recv()(2048)
创新互联公司从2013年创立,先为广昌等服务建站,广昌等地企业,进行企业商务咨询服务。为广昌企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
s.recv()即socket.recv(),的返回值是一个元组(data,address)
从发送方接收数据,接收到的数据data为字符串类型,保存在data中,从对方发送过来的地址保存在addr中。2048表示一次最多接收2048个字节。
原来Python的socket.recv(n)函数,并没有真正将我们希望接收的数据字长n全部接收,只需要保证Python将我们希望接收的所有长度接收即可。那么根据需求,我们自己实现一个接收的函数即可:
#------------------------------------------------------# RecvN# recv N bytes to target
#------------------------------------------------------def RecvN(socket, n):
totalContent = b''
totalRecved = 0
while totalRecved n:
onceContent = socket.recv(n - totalRecved)print("onceContent", onceContent)totalContent += onceContent
totalRecved = len(totalContent)
return totalContent
# data = sockfd.recv(30 * 1024 + 14)
data = RecvN(sockfd, 30 * 1024 + 14)
这样的话,就可以把我们所有需要接收的字长接收了。
可以通过setsockopt,或者更简单的setblocking,
settimeout设置。阻塞式的socket的recv服从这样的规则:
当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。非阻塞式的socket的recv服从的规则则是:
当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)。两种情况都不会返回空字符串,返回空数据的结果是对方关闭了连接之后才会出现的。