socket编程: TypeError: must be bytes or buffer, not str
先看一段代码
#!/usr/bin/env python3
from socket import *
serverName = "10.10.10.132"
serverPort = 80
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
clientSocket.send("GET / HTTP/1.1\r\nHost: 10.10.10.132\r\n\r\n")
response = clientSocket.recv(4096)
print(response)
clientSocket.close()
在命令行中执行会出错,显示 TypeError: must be bytes or buffer, not str,错误在 clientSocket.send("GET / HTTP/1.1\r\nHost: 10.10.10.132\r\n\r\n")这一行。
意思是send的这个字符串格式错误,应该是字节或者缓冲区(差不多是这个意思吧?)。
google一下,看看stackoverflow:
翻译一下:这个问题就是python2与python3的区别之一,在python2中,send发送的string可以被当做'bytes',但是在python3中string就是string,bytes就是bytes,在调用send方法时,必须转换成字节(bytes)。
那如何将string转换成byte呢?
两种方法:
1.在字符串前加一个b,表示将字符串以bytes方式输出,即:b"This is a string"。
2.使用encode()方法
还有一种方法不推荐,就是使用python2的环境:将文件首部的#!/usr/bin/env python3
改成#!/usr/bin/python
现在知道问题所在了,把出错的那一行改成clientSocket.send(b"GET / HTTP/1.1\r\nHost: 10.10.10.132\r\n\r\n"),或者clientSocket.send("GET / HTTP/1.1\r\nHost: 10.10.10.132\r\n\r\n".encode())
enter, 运行。
搞定
那个stackoverflow链接:https://stackoverflow.com/questions/2411864/python-socket-send-buffer-vs-str
socket编程: TypeError: must be bytes or buffer, not str的更多相关文章
- 【爬坑】Python 3.6 在 Socket 编程时出现类型错误 TypeError: a bytes-like object is required, not 'str'
1. 问题描述 Python 3.6 在 Socket 编程时出现错误如下 Traceback (most recent call last): File "F:/share/IdeaPro ...
- Java网络编程学习A轮_07_基于Buffer的Socket编程
示例代码: https://github.com/gordonklg/study,socket module A. LineSeparate 基于 Buffer 实现逐行读取的 EchoServer ...
- 最基础的Python的socket编程入门教程
最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...
- c#socket编程基础
Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类 ...
- linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...
- Websocket和PHP Socket编程
本来是搜一些html5 websocket资料看的,结果被引去看了php的socket编程.下面是一些简单的例子,在命令行运行php脚本就行 [命令行运行PHP]PHP中有一个php.exe文件,可以 ...
- 如何为可扩展系统进行Java Socket编程
从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket ...
- 02--Java TCP Socket编程
一.基础知识 1. TCP状态转换知识,可参考: http://www.cnblogs.com/qlee/archive/2011/07/12/2104089.html 2. TCP/IP五层模型 ...
- <转>Go语言TCP Socket编程
授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...
随机推荐
- 通过iis访问电脑文件
新公司没有开发环境,移动端项目,需要自己在手机上先进行查看效果,提供了一个方法iis,之前有听过,但是一直没有用过,今天来记录一下这个配置过程: 环境:win10 1.安装iis 控制面板——程序—— ...
- FFT快速傅里叶变换算法
1.FFT算法概要: FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法.即为快速傅氏变换.它是根据离散傅氏变换的奇.偶.虚.实等特性,对离散傅立叶变换 ...
- 使用CocoaPods时遇到 Permission denied 问题
报错: Setting up CocoaPods master repo [!] /usr/bin/git clone fatal: could not create work tree dir 'm ...
- VS 2013Ultimate 开发过程中遇到的问题——listbox的隐藏问题,combobox.textchanged的中文问题
最近项目有需求,就是把一个combobox让它可以根据用户输入的汉字就行模糊查询出匹配的下拉框内容,很简单,是吧 但是!!!在开发中真是遇到了不少问题呢. 一.实现流程 1)我的实现思维是这样的,先把 ...
- 动态规划——Dungeon Game
这又是个题干很搞笑的题目:恶魔把公主囚禁在魔宫的右下角,骑士从魔宫的左上角开始穿越整个魔宫到右下角拯救公主,为了以最快速度拯救公主,骑士每次只能向下或者向右移动一个房间, 每个房间内都有一个整数值,负 ...
- CF666B. World Tour
CF666B. World Tour 题意: 给定一张边权为 1 的有向图,求四个不同点 A, B, C, D 使得 dis(A, B) + dis(B, C) + dis(C, D) 取最大值,di ...
- U-Boot内存管理
如<Linux内核内存管理架构>一文中提到,linux内核中的内存管理支持内存地址映射.内存分配.内存回收.内存碎片管理.页面缓存等众多功能.但U-Boot做为启动引导程序,其核心功能就是 ...
- CentOS7x64 防火墙配置
Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=publi ...
- JUC笔记
3个售票员,卖30张票 package com.javase.thread; import java.util.concurrent.locks.Lock; import java.uti ...
- HTML/CSS实现的一个列表页
又到休息日,白天没事跟朋友去逛逛街,侃大山,晚上了,上网无趣,于是就想起该练练了, 这次是做了一个页面,最上面是一个banner 用到了一个jQuery的逻辑判断当banner初始top值小于wind ...