Python 3.X 与 2.X 的恩怨情仇 (一)
来源:互联网 发布:mac面对面快传 编辑:程序博客网 时间:2024/05/17 07:23
Python 3.X 与 2.X 的恩怨情仇 (一)
闲来用python socket写了一对简单的服务端与客户端
三下五除二的搞定后,兴高采烈的开始尝试
熟练的打开CMD 敲下python Client.py和python Server.py
这似曾相识的错误 到底是什么呀喂!!!
于是查看代码
Client.py
import sockets = socket.socket()host = socket.gethostname()port = 1234s.connect((host,port))print(s.recv(1024))s.close()
Server.py
import sockets = socket.socket()host = socket.gethostname()port = 1234s.bind((host,port))s.listen(5)while True: c, addr = s.accept() print('链接地址:',addr) c.send('Welcom!!') c.close()
根据错误的提示我们锁定Serve.py的第14行: c.send('Welcom!!')
怎么看都不像错的啊喂!!!
去求助万能度娘发现:
can’t use a string pattern on a bytes-like object的原因是:
3.x现在的参数更改了,现在读取的是bytes-like的,但参数要求是chart-like的。
解决方法:
1. 在str前面加一个小b,表示要操作的对象是bytes型。
2. bytes(str,encoding=”utf-8”)
总而言之就是要将str类型的对象转换为bytes类型 c.send(b'welcome!!!')
c.send(bytes('welcome!!!',encoding="utf-8"))
这两种修改方式都可以让服务端成功发送数据
客户端成功接收
socket.send()的输入参数是需要bytes,在python2.x中支持str,所以在我们使用3.x平台时候需要将其转化为bytes
2 0
- Python 3.X 与 2.X 的恩怨情仇 (一)
- <python>python 2.x 与 3.x 的区别
- Python 3.x 与Python 2.x的区别
- python 2.x 与 python 3.x 的比较
- 一像素的恩怨情仇!程序猿与…
- python 2.x 与 3.x 的不同之处
- python 3.x 与 2.x的区别
- python 2.x 与3.x的区别
- python 3.x 与 2.x的区别
- python 3.x 与 2.x的区别
- python 3.x 与 2.x的区别
- Python 2.X 与 3.X 版本的重要区别
- python 2.x 与3.x的区别
- python 3.x 与 2.x区别
- 【Python】2.x与3.x区别
- python的2.x和3.x
- Python 2.7.x 与 Python 3.x 的主要差异
- block与堆栈的恩怨情仇
- MYSQL的常用SQL的优化
- 《安卓Webview漏洞的检测与利用》
- 【bzoj3282】Tree
- Gym-100712A-Who Is The Winner
- 让cmd或bat文件运行完后停在运行界面
- Python 3.X 与 2.X 的恩怨情仇 (一)
- vim的基本用法
- C#访问postgresql数据库类MyPostDB的实现
- centos6.7、centos6.5下yum方式搭建lnmp环境,php5.4/mysql5.5
- 搭建Struts2+Spring+Hibernate三大框架的步骤
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
- nodejs https request CERT_UNTRUSTED
- hdu-3367 Pseudoforest(伪森林, kruskal变形)
- Gym-100712B-Rock-Paper-Scissors