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它就好了。但这样的话,就不能接受很长很长的消息了 -.- 展开
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它就好了。但这样的话,就不能接受很长很长的消息了 -.- 展开
1个回答
2013-09-04
展开全部
recv()的参数是缓冲区的大小,你可以设置大一点。recv是一个阻塞函数,如果收不到数据,就会阻塞在那里。作为服务器,这样阻塞是正常的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询