In python 3, bytes strings and unicodestrings are now two different types. Since sockets are not aware of string encodings, they are using raw bytes strings, that have a slightly differentinterface from unicode strings.
So, now, whenever you have a unicode stringthat you need to use as a byte string, you need toencode() it. And whenyou have a byte string, you need to decode it to use it as a regular(python 2.x) string.
Unicode strings are quotes enclosedstrings. Bytes strings are b"" enclosed strings
When you use client_socket.send(data),replace it by client_socket.send(data.encode()). When you get datausing data = client_socket.recv(512), replace it by data =client_socket.recv(512).decode()
python作者 在python3 更新时 相对于2做出了改进:
将字符串变成了 Unicode,文件默认编码变成了utf-8
将str 与 bytes 做出了明确区分,str就是单纯的Unicode格式的字符,bytes就是单纯的二进制(在python2里面 Unicode与str类型,str与bytes类型的关系很混乱,具体想了解,自行百度)