关于socket在python2与python3异同
今天,我写了一段代码,是引用python中封装模块wsgiref实现一个网络服务具体代码如下
from wsgiref.simple_server import make_server def RunServer(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) return '<h1>Hello,web!</h1>' if __name__=='__main__': httpd=make_server('',8000,RunServer) print("Serving HTTP on port 8000....") httpd.serve_forever()
在python2中运行正常,但转python3时,则问题出来了。
下面是在python3中的运行情况:
服务端:
显示正常
客户端:
而此时,再看服务端,报错了:
从报错中可以看出,接受的内容格式应该是格 式不对的一个字符串
将服务器代码调整成:
from wsgiref.simple_server import make_server def RunServer(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) # return '<h1>Hello,web!</h1>' #python2 写法 return ['<h1> Hello world </h1>'.encode('utf_8')] #python3 写法 if __name__=='__main__': httpd=make_server('',8000,RunServer) print("Serving HTTP on port 8000....") httpd.serve_forever()
服务端:
客户端:
问题最终解决 ;
原来字符串编码问题。