python套接字(《python核心编程》实例)报错

书中的例子中报错,原因是下面的一行代码没有将字符串编码,所以将代码进行修改后代码可以正常运行。

tcpCliSock.send(data)

tcpCliSock.send(data.encode(encoding='utf-8'))

服务端

from socket import *

Host=""#变量是空白的,表示可以使用任何可用的地址
port=21567
BUFSIZ=1024
ADDR=(Host,port)
tcpSerSock=socket(AF_INET,SOCK_STREAM) #分配了TCP套接字
tcpSerSock.bind(ADDR)
#将套接字绑定到服务器地址以及开启TCP监听器的调用
tcpSerSock.listen(5)
#连接被转接或者拒绝之前,传入请求的最大连接数
while True:
    #等待服务器的连接,如果消息是空白的,意味着客户端已经退出
    print("waiting for connection")
    tcpCliSock,addr=tcpSerSock.accept()

    print('connectin from:',addr)
    while True:
        data=tcpCliSock.recv(BUFSIZ).decode('utf-8')
        print("the client says: ",data)
        if not data:
            break
        tcpCliSock.send(data.encode(encoding='utf-8'))
    tcpCliSock.close()
tcpSerSock.close()

客户端

from socket import *

HOST='localhost'#主机名
POST=21567#端口号,应该与服务端的端口号相同
BUFSIZ=1024
ADDR=(HOST,POST)
tcpCliSock=socket(AF_INET,SOCK_STREAM)#分配了套接字
tcpCliSock.connect(ADDR)
while True:
    data=input('>')
    if not data:
        break

    tcpCliSock.send(data.encode(encoding='utf-8'))
    data=tcpCliSock.recv(BUFSIZ)
    if not data:
        break
    print(data.decode('utf-8'))
tcpCliSock.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值