Python的socket编程recv(1024)为什么收不到数据 10
expl=socket.socket(socket.AF_INET,socket.SOCK_STREAM);expl.connect((url,80));expl.sen...
expl = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
expl.connect((url,80));
expl.send(text);
print "[*]success!"
poc = []
while True:
d = expl.recv(1024)
if d:
poc.append(d)
else:
break
data = ''.join(poc)
expl.close(); 展开
expl.connect((url,80));
expl.send(text);
print "[*]success!"
poc = []
while True:
d = expl.recv(1024)
if d:
poc.append(d)
else:
break
data = ''.join(poc)
expl.close(); 展开
1个回答
2017-07-31 · 知道合伙人互联网行家
关注
展开全部
原来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)
这样的话,就可以把我们所有需要接收的字长接收了。
#------------------------------------------------------# 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)
这样的话,就可以把我们所有需要接收的字长接收了。
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Android和ARM、Linux之间存在密切的联系。Android是一种基于Linux内核的嵌入式智能操作系统,它采用了ARM处理器作为其主要处理器架构。Android的内核和许多应用程序都是基于ARM架构编写的,包括处理器和内存管理器。...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询