zoukankan      html  css  js  c++  java
  • python基础知识的重新认识

    昨天模拟书本上client和server交互的例子,代码明明是按照书上写的,可是就是出现了错误,像下面这样:
    # tcpserver
    from socket import *
    from time import ctime
    
    HOST =''
    PORT = 6555
    BUFSIZ = 2048
    ADDR = (HOST,PORT)
    
    tcpservsock = socket(AF_INET,SOCK_STREAM)
    tcpservsock.bind(ADDR)
    
    tcpservsock.listen(5)
    
    while True:
        
        print('waiting for connection...')
        tcpClisock,addr = tcpservsock.accept()
        print('...connected from:',addr)
    
        while True:
            data = tcpClisock.recv(BUFSIZ)
            if not data:
                break
            print(data.decode('utf8'))
            tcpClisock.send('[%s]%s'%(bytes(ctime(),'utf8'),data)) # 这里弹出错误
        tcpClisock.close()
    
    tcpservsock.close()
    
    #tcpClient
    from socket import *
    HOST = 'localhost'
    PORT = 6555
    BUFSIZ = 2048 
    ADDR = (HOST,PORT) 
    
    tcpClisock = socket(AF_INET,SOCK_STREAM)
    tcpClisock.connect(ADDR)
    while True:
        data = input('> ')
        if not data:
            
            break
        tcpClisock.send(data.encode())
        data = tcpClisock.recv(BUFSIZ)
        if not data:
            break
        print(data.decode('utf-8'))
            
    tcpClisock.close()
    

     然后错误就出现了:

    waiting for connection...
    ...connected from: ('127.0.0.1', 3786)
    hi
    Traceback (most recent call last):
      File "C:UsersyfgDesktopserver.py", line 26, in <module>
        tcpClisock.send('[%s]%s'%(bytes(ctime(),'utf8'),data))
    TypeError: a bytes-like object is required, not 'str'
    

     在苦思冥想之后,我发现:在server.py line26中 ,我将二进制数据放在了 字符串格式化符后面,这是不对的,所以只要在原来  '[%s]%s'%(bytes(ctime(),'utf8'),data) 前面 加上 b ,就像这样   b'[%s]%s'%(bytes(ctime(),'utf8'),data)  ,然后 跑起来 :在服务器这边得到这个 : 
    ,在客户端这边得到这个:   问题就解决了 。 总结一下就是:字符串格式化后跟字符串,二进制格式化要在字符串格式前加字母b。

       

  • 相关阅读:
    for循环删除数组中的元素crash问题
    iOS判断字符串中含不含有汉字
    iOS 拨打电话(解决openURL延迟和不同方法比较)
    ios oc单例宏定义
    iOS UIBezierPath简单实用
    iOS视图切割圆角
    iOS 内购集成与遇到的坑,添加新内购项目
    iOS工程中创建pch文件
    四舍五入的方法
    ScrollView定时器复用
  • 原文地址:https://www.cnblogs.com/Alexisbusyblog/p/8626070.html
Copyright © 2011-2022 走看看