python socket 编程疑问

#EchoserverprogramimportsocketHOST=''#SymbolicnamemeaningallavailableinterfacesPORT=5... # Echo server program
import socket

HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

每一次都是到recv这句话上卡住,好像 if not data 根本不管用,recv到一次结果后总是傻掉。如果干脆break它就好了。但这样的话,就不能接受很长很长的消息了 -.-
展开
 我来答
匿名用户
2013-09-04
展开全部
recv()的参数是缓冲区的大小,你可以设置大一点。recv是一个阻塞函数,如果收不到数据,就会阻塞在那里。作为服务器,这样阻塞是正常的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式