python3-网络编程-TypeError: send() argument 1 must be bytes or buffer, not str异常

异常发生情况:

当我照着书中的例子敲一个例子时,运行失败。报一个错误:TypeError: send() argument 1 must be bytes or buffer, not str,很是郁闷,因为都是按照书中写的,不可能有问题。在网上搜了一下,怀疑是版本问题,书中使用的是python2.7,我使用的是python3.0,python3.0以后使用的是unicode编码,所有在网络传输过程中需要将内容进行转码,客户端再解码。解决了这个问题。

代码:

# -*-coding:utf-8 -*-
'''
Created on 2014-4-11
tcp客户端
@author: liwenjie
'''


from socket import *


#
HOST="localhost"
PORT=10000
BUFSIZ=1024
ADDR = (HOST, PORT)


tcpCliSock = socket(AF_INET, SOCK_STREAM)


tcpCliSock.connect(ADDR)


while True:
    data = input('> ')
    if not data:
        break
    data = data.encode("ascii")
    tcpCliSock.send(data);------------------------->没有转码之前,运行这句话报错。
    data = tcpCliSock.recv(BUFSIZ);
    if not data:
        break
    print(data)
    
tcpCliSock.close()


异常解决方法:

增加编码转码。

你可能感兴趣的:(python)