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)
这样的话,就可以把我们所有需要接收的字长接收了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询