zoukankan      html  css  js  c++  java
  • pytho核心编程2-1中代码运行问题

    书籍是《python核心编程》第三版,学习环境py3.6

    2-1 时间戳服务器

    附源代码:

     1 from socket import  *
     2 from time import ctime
     3 HOST=''
     4 PORT=8888
     5 BUFSIZ=1024
     6 ADDR=(HOST,PORT)
     7 tcpSerSock=socket(AF_INET,SOCK_STREAM)
     8 tcpSerSock.bind(ADDR)
     9 tcpSerSock.listen(5)
    10 while True:
    11     print("waiting for connection...")
    12     tcpCliSock,addr=tcpSerSock.accept()
    13     print('connected from:',addr)
    14     while True:
    15         data=tcpCliSock.recv(BUFSIZ).decode()
    16         if not data:
    17             break
    18         tcpCliSock.send(("[%s]%s"%(ctime(),data)))
    19         tcpCliSock.close()
    20     tcpSerSock.close()

    运行后

    Traceback (most recent call last):
    File "F:/learn_test/时间戳服务器.py", line 18, in <module>
    tcpCliSock.send(("[%s]%s" % (ctime(), data)))
    TypeError: a bytes-like object is required, not 'str'

    提示需要一个bytes类型的对象,而不是str

    。。。。照着书敲都会有错

    这还能难住老夫?

     1 from socket import  *
     2 from time import ctime
     3 HOST=''
     4 PORT=8888
     5 BUFSIZ=1024
     6 ADDR=(HOST,PORT)
     7 tcpSerSock=socket(AF_INET,SOCK_STREAM)
     8 tcpSerSock.bind(ADDR)
     9 tcpSerSock.listen(5)
    10 while True:
    11     print("waiting for connection...")
    12     tcpCliSock,addr=tcpSerSock.accept()
    13     print('connected from:',addr)
    14     while True:
    15         data=tcpCliSock.recv(BUFSIZ).decode()
    16         if not data:
    17             break
    18         tcpCliSock.send(("[%s]%s"%(ctime(),data)).encode())
    19         tcpCliSock.close()
    20     tcpSerSock.close()

    然后继续运行

    Traceback (most recent call last):
    File "F:/learn_test/时间戳服务器.py", line 15, in <module>
    data=tcpCliSock.recv(BUFSIZ).decode()
    OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。

    修正后

     1 from socket import  *
     2 from time import ctime
     3 HOST=''
     4 PORT=8888
     5 BUFSIZ=1024
     6 ADDR=(HOST,PORT)
     7 tcpSerSock=socket(AF_INET,SOCK_STREAM)
     8 tcpSerSock.bind(ADDR)
     9 tcpSerSock.listen(5)
    10 while True:
    11     print("waiting for connection...")
    12     tcpCliSock,addr=tcpSerSock.accept()
    13     print('connected from:',addr)
    14     while True:
    15         data=tcpCliSock.recv(BUFSIZ).decode()
    16         if not data:
    17             break
    18         # tcpCliSock.send(("[%s]%s" % (ctime(), data)))
    19         tcpCliSock.send(("[%s]%s"%(ctime(),data)).encode())
    20     tcpCliSock.close()
    21     tcpSerSock.close()

    区别就是描红的那一行

    本次表演到此结束

  • 相关阅读:
    [LeetCode] Power of Three 判断3的次方数
    [LeetCode] 322. Coin Change 硬币找零
    [LeetCode] 321. Create Maximum Number 创建最大数
    ITK 3.20.1 VS2010 Configuration 配置
    VTK 5.10.1 VS2010 Configuration 配置
    FLTK 1.3.3 MinGW 4.9.1 Configuration 配置
    FLTK 1.1.10 VS2010 Configuration 配置
    Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别
    [LeetCode] Bulb Switcher 灯泡开关
    [LeetCode] Maximum Product of Word Lengths 单词长度的最大积
  • 原文地址:https://www.cnblogs.com/qflyue/p/8125871.html
Copyright © 2011-2022 走看看