Python中socket函数recv的问题!

我在写python教程的博客,但是今天在写socket编程的相关知识的时候,准备用下面的程序做演示代码,本以为不会有问题,但是问题就莫名其妙的出现了!

d = s.recv(1024) 

这段代码的返回值通过使用 not d 判断总是失败,于是那个循环读取的 while 就陷入了死循环,请各位帮忙看一下,谢谢!


#-*- coding:utf8 -*-


import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.oschina.net", 80))
s.send("GET / HTTP/1.1\r\nHost:www.oschina.net\r\n\r\n")

tmp = []
while True:
    d = s.recv(1024)
    if not d:
        break
    tmp.append(d)

data = ''.join(tmp)
s.close()

header, html = data.split("\r\n\r\n", 1)
print header
with open("oschina.html", "wb") as f:
    f.write(html)


Qyouu
浏览 2124回答 2
2回答

largeQ

服务器没断开链接,recv一直阻塞在那里,还没走到if not d

鸿蒙传说

recv没有得到信息的时候会返回一个0吧,not 0返回了True
打开App,查看更多内容
随时随地看视频慕课网APP